gitee.com/lh-her-team/common@v1.5.1/crypto/tls/curve_oid.go (about) 1 package tls 2 3 import ( 4 "crypto/elliptic" 5 "encoding/asn1" 6 7 "github.com/tjfoc/gmsm/sm2" 8 ) 9 10 //this is from x509 pkg 11 12 var ( 13 oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33} 14 oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7} 15 oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34} 16 oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35} 17 oidNamedCurveSm2 = asn1.ObjectIdentifier{1, 2, 156, 10197, 1, 301} 18 ) 19 20 func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve { 21 switch { 22 case oid.Equal(oidNamedCurveP224): 23 return elliptic.P224() 24 case oid.Equal(oidNamedCurveP256): 25 return elliptic.P256() 26 case oid.Equal(oidNamedCurveP384): 27 return elliptic.P384() 28 case oid.Equal(oidNamedCurveP521): 29 return elliptic.P521() 30 case oid.Equal(oidNamedCurveSm2): 31 return sm2.P256Sm2() 32 } 33 return nil 34 } 35 36 func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) { 37 switch curve { 38 case elliptic.P224(): 39 return oidNamedCurveP224, true 40 case elliptic.P256(): 41 return oidNamedCurveP256, true 42 case elliptic.P384(): 43 return oidNamedCurveP384, true 44 case elliptic.P521(): 45 return oidNamedCurveP521, true 46 case sm2.P256Sm2(): 47 return oidNamedCurveSm2, true 48 } 49 return nil, false 50 }