2525import org .bouncycastle .asn1 .DERBitString ;
2626import org .bouncycastle .asn1 .DEROctetString ;
2727import org .bouncycastle .asn1 .DERSequence ;
28- import org .bouncycastle .asn1 .bc .BCObjectIdentifiers ;
2928import org .bouncycastle .asn1 .nist .NISTObjectIdentifiers ;
3029import org .bouncycastle .asn1 .pkcs .PKCSObjectIdentifiers ;
3130import org .bouncycastle .asn1 .pkcs .PrivateKeyInfo ;
@@ -56,20 +55,24 @@ public class KeyFactorySpi
5655 extends BaseKeyFactorySpi
5756 implements AsymmetricKeyInfoConverter
5857{
58+ private static AlgorithmIdentifier createECAlgID (ASN1ObjectIdentifier curveOid )
59+ {
60+ return new AlgorithmIdentifier (X9ObjectIdentifiers .id_ecPublicKey , new X962Parameters (curveOid ));
61+ }
5962
6063 //Specific algorithm identifiers of all component signature algorithms for SubjectPublicKeyInfo. These do not need to be all initialized here but makes the code more readable IMHO.
6164 private static final AlgorithmIdentifier mlDsa44 = new AlgorithmIdentifier (NISTObjectIdentifiers .id_ml_dsa_44 );
6265 private static final AlgorithmIdentifier mlDsa65 = new AlgorithmIdentifier (NISTObjectIdentifiers .id_ml_dsa_65 );
6366 private static final AlgorithmIdentifier mlDsa87 = new AlgorithmIdentifier (NISTObjectIdentifiers .id_ml_dsa_87 );
64- private static final AlgorithmIdentifier falcon512Identifier = new AlgorithmIdentifier (BCObjectIdentifiers .falcon_512 );
67+ // private static final AlgorithmIdentifier falcon512Identifier = new AlgorithmIdentifier(BCObjectIdentifiers.falcon_512);
6568 private static final AlgorithmIdentifier ed25519 = new AlgorithmIdentifier (EdECObjectIdentifiers .id_Ed25519 );
66- private static final AlgorithmIdentifier ecDsaP256 = new AlgorithmIdentifier (X9ObjectIdentifiers .id_ecPublicKey , new X962Parameters (SECObjectIdentifiers .secp256r1 ));
67- private static final AlgorithmIdentifier ecDsaBrainpoolP256r1 = new AlgorithmIdentifier (X9ObjectIdentifiers .id_ecPublicKey , new X962Parameters (TeleTrusTObjectIdentifiers .brainpoolP256r1 ));
68- private static final AlgorithmIdentifier rsa = new AlgorithmIdentifier (PKCSObjectIdentifiers .rsaEncryption );
6969 private static final AlgorithmIdentifier ed448 = new AlgorithmIdentifier (EdECObjectIdentifiers .id_Ed448 );
70- private static final AlgorithmIdentifier ecDsaP384 = new AlgorithmIdentifier (X9ObjectIdentifiers .id_ecPublicKey , new X962Parameters (SECObjectIdentifiers .secp384r1 ));
71- private static final AlgorithmIdentifier ecDsaP521 = new AlgorithmIdentifier (X9ObjectIdentifiers .id_ecPublicKey , new X962Parameters (SECObjectIdentifiers .secp521r1 ));
72- private static final AlgorithmIdentifier ecDsaBrainpoolP384r1 = new AlgorithmIdentifier (X9ObjectIdentifiers .id_ecPublicKey , new X962Parameters (TeleTrusTObjectIdentifiers .brainpoolP384r1 ));
70+ private static final AlgorithmIdentifier ecDsaP256 = createECAlgID (SECObjectIdentifiers .secp256r1 );
71+ private static final AlgorithmIdentifier ecDsaP384 = createECAlgID (SECObjectIdentifiers .secp384r1 );
72+ private static final AlgorithmIdentifier ecDsaP521 = createECAlgID (SECObjectIdentifiers .secp521r1 );
73+ private static final AlgorithmIdentifier ecDsaBrainpoolP256r1 = createECAlgID (TeleTrusTObjectIdentifiers .brainpoolP256r1 );
74+ private static final AlgorithmIdentifier ecDsaBrainpoolP384r1 = createECAlgID (TeleTrusTObjectIdentifiers .brainpoolP384r1 );
75+ private static final AlgorithmIdentifier rsa = new AlgorithmIdentifier (PKCSObjectIdentifiers .rsaEncryption );
7376
7477 private static Map <ASN1ObjectIdentifier , AlgorithmIdentifier []> pairings = new HashMap <ASN1ObjectIdentifier , AlgorithmIdentifier []>();
7578 private static Map <ASN1ObjectIdentifier , int []> componentKeySizes = new HashMap <ASN1ObjectIdentifier , int []>();
@@ -289,7 +292,7 @@ public PublicKey generatePublic(SubjectPublicKeyInfo keyInfo)
289292
290293 try
291294 {
292- seq = DERSequence .getInstance (keyInfo .getPublicKeyData ().getBytes ());
295+ seq = ASN1Sequence .getInstance (keyInfo .getPublicKeyData ().getOctets ());
293296 }
294297 catch (Exception e )
295298 {
@@ -299,7 +302,8 @@ public PublicKey generatePublic(SubjectPublicKeyInfo keyInfo)
299302 if (MiscObjectIdentifiers .id_alg_composite .equals (keyIdentifier )
300303 || MiscObjectIdentifiers .id_composite_key .equals (keyIdentifier ))
301304 {
302- ASN1Sequence keySeq = ASN1Sequence .getInstance (keyInfo .getPublicKeyData ().getBytes ());
305+ // TODO This is redundant with 'seq' calculation above
306+ ASN1Sequence keySeq = ASN1Sequence .getInstance (keyInfo .getPublicKeyData ().getOctets ());
303307 PublicKey [] pubKeys = new PublicKey [keySeq .size ()];
304308
305309 for (int i = 0 ; i != keySeq .size (); i ++)
0 commit comments