11package org .bouncycastle .openpgp .operator .bc ;
22
3+ import java .math .BigInteger ;
4+ import java .security .SecureRandom ;
5+ import java .util .Date ;
6+
37import org .bouncycastle .asn1 .ASN1ObjectIdentifier ;
8+ import org .bouncycastle .asn1 .x9 .ECNamedCurveTable ;
9+ import org .bouncycastle .asn1 .x9 .X9ECParameters ;
410import org .bouncycastle .bcpg .PublicKeyAlgorithmTags ;
511import org .bouncycastle .bcpg .PublicKeyPacket ;
612import org .bouncycastle .crypto .AsymmetricCipherKeyPair ;
713import org .bouncycastle .crypto .CryptoServicesRegistrar ;
14+ import org .bouncycastle .crypto .ec .CustomNamedCurves ;
815import org .bouncycastle .crypto .generators .ECKeyPairGenerator ;
916import org .bouncycastle .crypto .generators .Ed25519KeyPairGenerator ;
1017import org .bouncycastle .crypto .generators .Ed448KeyPairGenerator ;
1825import org .bouncycastle .crypto .params .RSAKeyGenerationParameters ;
1926import org .bouncycastle .crypto .params .X25519KeyGenerationParameters ;
2027import org .bouncycastle .crypto .params .X448KeyGenerationParameters ;
21- import org .bouncycastle .jcajce .provider .asymmetric .util .ECUtil ;
2228import org .bouncycastle .openpgp .PGPException ;
2329import org .bouncycastle .openpgp .PGPKeyPair ;
2430import org .bouncycastle .openpgp .operator .PGPKeyPairGenerator ;
2531import org .bouncycastle .openpgp .operator .PGPKeyPairGeneratorProvider ;
2632
27- import java .math .BigInteger ;
28- import java .security .SecureRandom ;
29- import java .util .Date ;
30-
3133public class BcPGPKeyPairGeneratorProvider
3234 extends PGPKeyPairGeneratorProvider
3335{
@@ -140,7 +142,7 @@ public PGPKeyPair generateECDHKeyPair(ASN1ObjectIdentifier curveOID)
140142 {
141143 ECKeyPairGenerator gen = new ECKeyPairGenerator ();
142144 gen .init (new ECKeyGenerationParameters (
143- new ECNamedDomainParameters (curveOID , ECUtil . getNamedCurveByOid (curveOID )),
145+ new ECNamedDomainParameters (curveOID , getNamedCurveByOid (curveOID )),
144146 CryptoServicesRegistrar .getSecureRandom ()));
145147
146148 AsymmetricCipherKeyPair keyPair = gen .generateKeyPair ();
@@ -153,11 +155,24 @@ public PGPKeyPair generateECDSAKeyPair(ASN1ObjectIdentifier curveOID)
153155 {
154156 ECKeyPairGenerator gen = new ECKeyPairGenerator ();
155157 gen .init (new ECKeyGenerationParameters (
156- new ECNamedDomainParameters (curveOID , ECUtil . getNamedCurveByOid (curveOID )),
158+ new ECNamedDomainParameters (curveOID , getNamedCurveByOid (curveOID )),
157159 CryptoServicesRegistrar .getSecureRandom ()));
158160
159161 AsymmetricCipherKeyPair keyPair = gen .generateKeyPair ();
160162 return new BcPGPKeyPair (version , PublicKeyAlgorithmTags .ECDSA , keyPair , creationTime );
161163 }
162164 }
165+
166+ private static X9ECParameters getNamedCurveByOid (
167+ ASN1ObjectIdentifier oid )
168+ {
169+ X9ECParameters params = CustomNamedCurves .getByOID (oid );
170+
171+ if (params == null )
172+ {
173+ params = ECNamedCurveTable .getByOID (oid );
174+ }
175+
176+ return params ;
177+ }
163178}
0 commit comments