1
1
package org .bouncycastle .openpgp .operator .bc ;
2
2
3
+ import java .math .BigInteger ;
4
+ import java .security .SecureRandom ;
5
+ import java .util .Date ;
6
+
3
7
import org .bouncycastle .asn1 .ASN1ObjectIdentifier ;
8
+ import org .bouncycastle .asn1 .x9 .ECNamedCurveTable ;
9
+ import org .bouncycastle .asn1 .x9 .X9ECParameters ;
4
10
import org .bouncycastle .bcpg .PublicKeyAlgorithmTags ;
5
11
import org .bouncycastle .bcpg .PublicKeyPacket ;
6
12
import org .bouncycastle .crypto .AsymmetricCipherKeyPair ;
7
13
import org .bouncycastle .crypto .CryptoServicesRegistrar ;
14
+ import org .bouncycastle .crypto .ec .CustomNamedCurves ;
8
15
import org .bouncycastle .crypto .generators .ECKeyPairGenerator ;
9
16
import org .bouncycastle .crypto .generators .Ed25519KeyPairGenerator ;
10
17
import org .bouncycastle .crypto .generators .Ed448KeyPairGenerator ;
18
25
import org .bouncycastle .crypto .params .RSAKeyGenerationParameters ;
19
26
import org .bouncycastle .crypto .params .X25519KeyGenerationParameters ;
20
27
import org .bouncycastle .crypto .params .X448KeyGenerationParameters ;
21
- import org .bouncycastle .jcajce .provider .asymmetric .util .ECUtil ;
22
28
import org .bouncycastle .openpgp .PGPException ;
23
29
import org .bouncycastle .openpgp .PGPKeyPair ;
24
30
import org .bouncycastle .openpgp .operator .PGPKeyPairGenerator ;
25
31
import org .bouncycastle .openpgp .operator .PGPKeyPairGeneratorProvider ;
26
32
27
- import java .math .BigInteger ;
28
- import java .security .SecureRandom ;
29
- import java .util .Date ;
30
-
31
33
public class BcPGPKeyPairGeneratorProvider
32
34
extends PGPKeyPairGeneratorProvider
33
35
{
@@ -140,7 +142,7 @@ public PGPKeyPair generateECDHKeyPair(ASN1ObjectIdentifier curveOID)
140
142
{
141
143
ECKeyPairGenerator gen = new ECKeyPairGenerator ();
142
144
gen .init (new ECKeyGenerationParameters (
143
- new ECNamedDomainParameters (curveOID , ECUtil . getNamedCurveByOid (curveOID )),
145
+ new ECNamedDomainParameters (curveOID , getNamedCurveByOid (curveOID )),
144
146
CryptoServicesRegistrar .getSecureRandom ()));
145
147
146
148
AsymmetricCipherKeyPair keyPair = gen .generateKeyPair ();
@@ -153,11 +155,24 @@ public PGPKeyPair generateECDSAKeyPair(ASN1ObjectIdentifier curveOID)
153
155
{
154
156
ECKeyPairGenerator gen = new ECKeyPairGenerator ();
155
157
gen .init (new ECKeyGenerationParameters (
156
- new ECNamedDomainParameters (curveOID , ECUtil . getNamedCurveByOid (curveOID )),
158
+ new ECNamedDomainParameters (curveOID , getNamedCurveByOid (curveOID )),
157
159
CryptoServicesRegistrar .getSecureRandom ()));
158
160
159
161
AsymmetricCipherKeyPair keyPair = gen .generateKeyPair ();
160
162
return new BcPGPKeyPair (version , PublicKeyAlgorithmTags .ECDSA , keyPair , creationTime );
161
163
}
162
164
}
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
+ }
163
178
}
0 commit comments