3939// - Support for parsing RSASES-OAEP public keys from certificates
4040// - Ed25519 support:
4141// - Support for parsing and marshaling Ed25519 keys
42+ // - X25519 support:
43+ // - Support for parsing X25519 keys
4244// - General improvements:
4345// - Export and use OID values throughout.
4446// - Export OIDFromNamedCurve().
@@ -321,6 +323,7 @@ const (
321323 ECDSA
322324 Ed25519
323325 RSAESOAEP
326+ X25519
324327)
325328
326329var publicKeyAlgoName = [... ]string {
@@ -329,6 +332,7 @@ var publicKeyAlgoName = [...]string{
329332 ECDSA : "ECDSA" ,
330333 Ed25519 : "Ed25519" ,
331334 RSAESOAEP : "RSAESOAEP" ,
335+ X25519 : "X25519" ,
332336}
333337
334338func (algo PublicKeyAlgorithm ) String () string {
@@ -584,6 +588,7 @@ var (
584588 OIDPublicKeyECDSA = asn1.ObjectIdentifier {1 , 2 , 840 , 10045 , 2 , 1 }
585589 OIDPublicKeyRSAObsolete = asn1.ObjectIdentifier {2 , 5 , 8 , 1 , 1 }
586590 OIDPublicKeyEd25519 = oidSignatureEd25519
591+ OIDPublicKeyX25519 = asn1.ObjectIdentifier {1 , 3 , 101 , 110 }
587592)
588593
589594func getPublicKeyAlgorithmFromOID (oid asn1.ObjectIdentifier ) PublicKeyAlgorithm {
@@ -598,6 +603,8 @@ func getPublicKeyAlgorithmFromOID(oid asn1.ObjectIdentifier) PublicKeyAlgorithm
598603 return RSAESOAEP
599604 case oid .Equal (OIDPublicKeyEd25519 ):
600605 return Ed25519
606+ case oid .Equal (OIDPublicKeyX25519 ):
607+ return X25519
601608 }
602609 return UnknownPublicKeyAlgorithm
603610}
@@ -1451,6 +1458,8 @@ func parsePublicKey(algo PublicKeyAlgorithm, keyData *publicKeyInfo, nfe *NonFat
14511458 return pub , nil
14521459 case Ed25519 :
14531460 return ed25519 .PublicKey (asn1Data ), nil
1461+ case X25519 :
1462+ return asn1Data , nil
14541463 default :
14551464 return nil , nil
14561465 }
0 commit comments