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  }