public class org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC extends org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC
super_class: org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator
{
org.bouncycastle.crypto.params.ECKeyGenerationParameters param;
descriptor: Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
flags: (0x0000)
org.bouncycastle.crypto.generators.ECKeyPairGenerator engine;
descriptor: Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
flags: (0x0000)
java.lang.Object ecParams;
descriptor: Ljava/lang/Object;
flags: (0x0000)
int strength;
descriptor: I
flags: (0x0000)
int certainty;
descriptor: I
flags: (0x0000)
java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0000)
boolean initialised;
descriptor: Z
flags: (0x0000)
java.lang.String algorithm;
descriptor: Ljava/lang/String;
flags: (0x0000)
private static java.util.Hashtable ecParameters;
descriptor: Ljava/util/Hashtable;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=0, args_size=0
0: new java.util.Hashtable
dup
invokespecial java.util.Hashtable.<init>:()V
putstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
1: getstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
new java.lang.Integer
dup
sipush 192
invokespecial java.lang.Integer.<init>:(I)V
new java.security.spec.ECGenParameterSpec
dup
ldc "prime192v1"
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
2: getstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
new java.lang.Integer
dup
sipush 239
invokespecial java.lang.Integer.<init>:(I)V
new java.security.spec.ECGenParameterSpec
dup
ldc "prime239v1"
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
3: getstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
new java.lang.Integer
dup
sipush 256
invokespecial java.lang.Integer.<init>:(I)V
new java.security.spec.ECGenParameterSpec
dup
ldc "prime256v1"
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: getstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
new java.lang.Integer
dup
sipush 224
invokespecial java.lang.Integer.<init>:(I)V
new java.security.spec.ECGenParameterSpec
dup
ldc "P-224"
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: getstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
new java.lang.Integer
dup
sipush 384
invokespecial java.lang.Integer.<init>:(I)V
new java.security.spec.ECGenParameterSpec
dup
ldc "P-384"
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: getstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
new java.lang.Integer
dup
sipush 521
invokespecial java.lang.Integer.<init>:(I)V
new java.security.spec.ECGenParameterSpec
dup
ldc "P-521"
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
7: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
ldc "EC"
invokespecial org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator.<init>:(Ljava/lang/String;)V
1: aload 0
new org.bouncycastle.crypto.generators.ECKeyPairGenerator
dup
invokespecial org.bouncycastle.crypto.generators.ECKeyPairGenerator.<init>:()V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.engine:Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
2: aload 0
aconst_null
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
3: aload 0
sipush 239
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.strength:I
4: aload 0
bipush 50
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.certainty:I
5: aload 0
new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.random:Ljava/security/SecureRandom;
6: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialised:Z
7: aload 0
ldc "EC"
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
8: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator$EC;
public void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator.<init>:(Ljava/lang/String;)V
1: aload 0
new org.bouncycastle.crypto.generators.ECKeyPairGenerator
dup
invokespecial org.bouncycastle.crypto.generators.ECKeyPairGenerator.<init>:()V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.engine:Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
2: aload 0
aconst_null
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
3: aload 0
sipush 239
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.strength:I
4: aload 0
bipush 50
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.certainty:I
5: aload 0
new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.random:Ljava/security/SecureRandom;
6: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialised:Z
7: aload 0
aload 1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator$EC;
0 9 1 algorithm Ljava/lang/String;
MethodParameters:
Name Flags
algorithm
public void initialize(int, java.security.SecureRandom);
descriptor: (ILjava/security/SecureRandom;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.strength:I
1: aload 0
aload 2
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.random:Ljava/security/SecureRandom;
2: aload 0
getstatic org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParameters:Ljava/util/Hashtable;
new java.lang.Integer
dup
iload 1
invokespecial java.lang.Integer.<init>:(I)V
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
3: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
ifnull 8
4: aload 0
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
checkcast java.security.spec.ECGenParameterSpec
aload 2
invokevirtual org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
5: goto 9
6: StackMap locals:
StackMap stack: java.security.InvalidAlgorithmParameterException
pop
7: new java.security.InvalidParameterException
dup
ldc "key size not configurable."
invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
new java.security.InvalidParameterException
dup
ldc "unknown key size."
invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator$EC;
0 10 1 strength I
0 10 2 random Ljava/security/SecureRandom;
Exception table:
from to target type
4 5 6 Class java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
strength
random
public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
descriptor: (Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
instanceof org.bouncycastle.jce.spec.ECParameterSpec
ifeq 7
1: aload 1
checkcast org.bouncycastle.jce.spec.ECParameterSpec
astore 3
start local 3 2: aload 0
aload 1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
3: aload 0
new org.bouncycastle.crypto.params.ECKeyGenerationParameters
dup
new org.bouncycastle.crypto.params.ECDomainParameters
dup
aload 3
invokevirtual org.bouncycastle.jce.spec.ECParameterSpec.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
aload 3
invokevirtual org.bouncycastle.jce.spec.ECParameterSpec.getG:()Lorg/bouncycastle/math/ec/ECPoint;
aload 3
invokevirtual org.bouncycastle.jce.spec.ECParameterSpec.getN:()Ljava/math/BigInteger;
invokespecial org.bouncycastle.crypto.params.ECDomainParameters.<init>:(Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)V
aload 2
invokespecial org.bouncycastle.crypto.params.ECKeyGenerationParameters.<init>:(Lorg/bouncycastle/crypto/params/ECDomainParameters;Ljava/security/SecureRandom;)V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
4: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.engine:Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
invokevirtual org.bouncycastle.crypto.generators.ECKeyPairGenerator.init:(Lorg/bouncycastle/crypto/KeyGenerationParameters;)V
5: aload 0
iconst_1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialised:Z
end local 3 6: goto 76
7: StackMap locals:
StackMap stack:
aload 1
instanceof java.security.spec.ECParameterSpec
ifeq 16
8: aload 1
checkcast java.security.spec.ECParameterSpec
astore 3
start local 3 9: aload 0
aload 1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
10: aload 3
invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
invokestatic org.bouncycastle.jce.provider.asymmetric.ec.EC5Util.convertCurve:(Ljava/security/spec/EllipticCurve;)Lorg/bouncycastle/math/ec/ECCurve;
astore 4
start local 4 11: aload 4
aload 3
invokevirtual java.security.spec.ECParameterSpec.getGenerator:()Ljava/security/spec/ECPoint;
iconst_0
invokestatic org.bouncycastle.jce.provider.asymmetric.ec.EC5Util.convertPoint:(Lorg/bouncycastle/math/ec/ECCurve;Ljava/security/spec/ECPoint;Z)Lorg/bouncycastle/math/ec/ECPoint;
astore 5
start local 5 12: aload 0
new org.bouncycastle.crypto.params.ECKeyGenerationParameters
dup
new org.bouncycastle.crypto.params.ECDomainParameters
dup
aload 4
aload 5
aload 3
invokevirtual java.security.spec.ECParameterSpec.getOrder:()Ljava/math/BigInteger;
aload 3
invokevirtual java.security.spec.ECParameterSpec.getCofactor:()I
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokespecial org.bouncycastle.crypto.params.ECDomainParameters.<init>:(Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aload 2
invokespecial org.bouncycastle.crypto.params.ECKeyGenerationParameters.<init>:(Lorg/bouncycastle/crypto/params/ECDomainParameters;Ljava/security/SecureRandom;)V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
13: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.engine:Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
invokevirtual org.bouncycastle.crypto.generators.ECKeyPairGenerator.init:(Lorg/bouncycastle/crypto/KeyGenerationParameters;)V
14: aload 0
iconst_1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialised:Z
end local 5 end local 4 end local 3 15: goto 76
16: StackMap locals:
StackMap stack:
aload 1
instanceof java.security.spec.ECGenParameterSpec
ifeq 66
17: aload 1
checkcast java.security.spec.ECGenParameterSpec
invokevirtual java.security.spec.ECGenParameterSpec.getName:()Ljava/lang/String;
astore 3
start local 3 18: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
ldc "ECGOST3410"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 31
19: aload 3
invokestatic org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves.getByName:(Ljava/lang/String;)Lorg/bouncycastle/crypto/params/ECDomainParameters;
astore 4
start local 4 20: aload 4
ifnonnull 22
21: new java.security.InvalidAlgorithmParameterException
dup
new java.lang.StringBuilder
dup
ldc "unknown curve name: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
22: StackMap locals: java.lang.String org.bouncycastle.crypto.params.ECDomainParameters
StackMap stack:
aload 0
new org.bouncycastle.jce.spec.ECNamedCurveSpec
dup
23: aload 3
24: aload 4
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
25: aload 4
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getG:()Lorg/bouncycastle/math/ec/ECPoint;
26: aload 4
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getN:()Ljava/math/BigInteger;
27: aload 4
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getH:()Ljava/math/BigInteger;
28: aload 4
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getSeed:()[B
invokespecial org.bouncycastle.jce.spec.ECNamedCurveSpec.<init>:(Ljava/lang/String;Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
29: putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
end local 4 30: goto 59
31: StackMap locals:
StackMap stack:
aload 3
invokestatic org.bouncycastle.asn1.x9.X962NamedCurves.getByName:(Ljava/lang/String;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
start local 4 32: aload 4
ifnonnull 51
33: aload 3
invokestatic org.bouncycastle.asn1.sec.SECNamedCurves.getByName:(Ljava/lang/String;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
34: aload 4
ifnonnull 36
35: aload 3
invokestatic org.bouncycastle.asn1.nist.NISTNamedCurves.getByName:(Ljava/lang/String;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
36: StackMap locals: org.bouncycastle.asn1.x9.X9ECParameters
StackMap stack:
aload 4
ifnonnull 38
37: aload 3
invokestatic org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves.getByName:(Ljava/lang/String;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
38: StackMap locals:
StackMap stack:
aload 4
ifnonnull 51
39: new org.bouncycastle.asn1.DERObjectIdentifier
dup
aload 3
invokespecial org.bouncycastle.asn1.DERObjectIdentifier.<init>:(Ljava/lang/String;)V
astore 5
start local 5 40: aload 5
invokestatic org.bouncycastle.asn1.x9.X962NamedCurves.getByOID:(Lorg/bouncycastle/asn1/DERObjectIdentifier;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
41: aload 4
ifnonnull 43
42: aload 5
invokestatic org.bouncycastle.asn1.sec.SECNamedCurves.getByOID:(Lorg/bouncycastle/asn1/DERObjectIdentifier;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
43: StackMap locals: org.bouncycastle.asn1.DERObjectIdentifier
StackMap stack:
aload 4
ifnonnull 45
44: aload 5
invokestatic org.bouncycastle.asn1.nist.NISTNamedCurves.getByOID:(Lorg/bouncycastle/asn1/DERObjectIdentifier;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
45: StackMap locals:
StackMap stack:
aload 4
ifnonnull 47
46: aload 5
invokestatic org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves.getByOID:(Lorg/bouncycastle/asn1/DERObjectIdentifier;)Lorg/bouncycastle/asn1/x9/X9ECParameters;
astore 4
47: StackMap locals:
StackMap stack:
aload 4
ifnonnull 51
48: new java.security.InvalidAlgorithmParameterException
dup
new java.lang.StringBuilder
dup
ldc "unknown curve OID: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
end local 5 49: StackMap locals: org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC java.security.spec.AlgorithmParameterSpec java.security.SecureRandom java.lang.String org.bouncycastle.asn1.x9.X9ECParameters
StackMap stack: java.lang.IllegalArgumentException
pop
50: new java.security.InvalidAlgorithmParameterException
dup
new java.lang.StringBuilder
dup
ldc "unknown curve name: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
51: StackMap locals:
StackMap stack:
aload 0
new org.bouncycastle.jce.spec.ECNamedCurveSpec
dup
52: aload 3
53: aload 4
invokevirtual org.bouncycastle.asn1.x9.X9ECParameters.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
54: aload 4
invokevirtual org.bouncycastle.asn1.x9.X9ECParameters.getG:()Lorg/bouncycastle/math/ec/ECPoint;
55: aload 4
invokevirtual org.bouncycastle.asn1.x9.X9ECParameters.getN:()Ljava/math/BigInteger;
56: aload 4
invokevirtual org.bouncycastle.asn1.x9.X9ECParameters.getH:()Ljava/math/BigInteger;
57: aconst_null
invokespecial org.bouncycastle.jce.spec.ECNamedCurveSpec.<init>:(Ljava/lang/String;Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
58: putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
end local 4 59: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
checkcast java.security.spec.ECParameterSpec
astore 4
start local 4 60: aload 4
invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
invokestatic org.bouncycastle.jce.provider.asymmetric.ec.EC5Util.convertCurve:(Ljava/security/spec/EllipticCurve;)Lorg/bouncycastle/math/ec/ECCurve;
astore 5
start local 5 61: aload 5
aload 4
invokevirtual java.security.spec.ECParameterSpec.getGenerator:()Ljava/security/spec/ECPoint;
iconst_0
invokestatic org.bouncycastle.jce.provider.asymmetric.ec.EC5Util.convertPoint:(Lorg/bouncycastle/math/ec/ECCurve;Ljava/security/spec/ECPoint;Z)Lorg/bouncycastle/math/ec/ECPoint;
astore 6
start local 6 62: aload 0
new org.bouncycastle.crypto.params.ECKeyGenerationParameters
dup
new org.bouncycastle.crypto.params.ECDomainParameters
dup
aload 5
aload 6
aload 4
invokevirtual java.security.spec.ECParameterSpec.getOrder:()Ljava/math/BigInteger;
aload 4
invokevirtual java.security.spec.ECParameterSpec.getCofactor:()I
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokespecial org.bouncycastle.crypto.params.ECDomainParameters.<init>:(Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aload 2
invokespecial org.bouncycastle.crypto.params.ECKeyGenerationParameters.<init>:(Lorg/bouncycastle/crypto/params/ECDomainParameters;Ljava/security/SecureRandom;)V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
63: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.engine:Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
invokevirtual org.bouncycastle.crypto.generators.ECKeyPairGenerator.init:(Lorg/bouncycastle/crypto/KeyGenerationParameters;)V
64: aload 0
iconst_1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialised:Z
end local 6 end local 5 end local 4 end local 3 65: goto 76
66: StackMap locals:
StackMap stack:
aload 1
ifnonnull 73
invokestatic org.bouncycastle.jce.provider.ProviderUtil.getEcImplicitlyCa:()Lorg/bouncycastle/jce/spec/ECParameterSpec;
ifnull 73
67: invokestatic org.bouncycastle.jce.provider.ProviderUtil.getEcImplicitlyCa:()Lorg/bouncycastle/jce/spec/ECParameterSpec;
astore 3
start local 3 68: aload 0
aload 1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
69: aload 0
new org.bouncycastle.crypto.params.ECKeyGenerationParameters
dup
new org.bouncycastle.crypto.params.ECDomainParameters
dup
aload 3
invokevirtual org.bouncycastle.jce.spec.ECParameterSpec.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
aload 3
invokevirtual org.bouncycastle.jce.spec.ECParameterSpec.getG:()Lorg/bouncycastle/math/ec/ECPoint;
aload 3
invokevirtual org.bouncycastle.jce.spec.ECParameterSpec.getN:()Ljava/math/BigInteger;
invokespecial org.bouncycastle.crypto.params.ECDomainParameters.<init>:(Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)V
aload 2
invokespecial org.bouncycastle.crypto.params.ECKeyGenerationParameters.<init>:(Lorg/bouncycastle/crypto/params/ECDomainParameters;Ljava/security/SecureRandom;)V
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
70: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.engine:Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.param:Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
invokevirtual org.bouncycastle.crypto.generators.ECKeyPairGenerator.init:(Lorg/bouncycastle/crypto/KeyGenerationParameters;)V
71: aload 0
iconst_1
putfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialised:Z
end local 3 72: goto 76
73: StackMap locals:
StackMap stack:
aload 1
ifnonnull 75
invokestatic org.bouncycastle.jce.provider.ProviderUtil.getEcImplicitlyCa:()Lorg/bouncycastle/jce/spec/ECParameterSpec;
ifnonnull 75
74: new java.security.InvalidAlgorithmParameterException
dup
ldc "null parameter passed but no implicitCA set"
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
75: StackMap locals:
StackMap stack:
new java.security.InvalidAlgorithmParameterException
dup
ldc "parameter object not a ECParameterSpec"
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
76: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 77 0 this Lorg/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator$EC;
0 77 1 params Ljava/security/spec/AlgorithmParameterSpec;
0 77 2 random Ljava/security/SecureRandom;
2 6 3 p Lorg/bouncycastle/jce/spec/ECParameterSpec;
9 15 3 p Ljava/security/spec/ECParameterSpec;
11 15 4 curve Lorg/bouncycastle/math/ec/ECCurve;
12 15 5 g Lorg/bouncycastle/math/ec/ECPoint;
18 65 3 curveName Ljava/lang/String;
20 30 4 ecP Lorg/bouncycastle/crypto/params/ECDomainParameters;
32 59 4 ecP Lorg/bouncycastle/asn1/x9/X9ECParameters;
40 49 5 oid Lorg/bouncycastle/asn1/DERObjectIdentifier;
60 65 4 p Ljava/security/spec/ECParameterSpec;
61 65 5 curve Lorg/bouncycastle/math/ec/ECCurve;
62 65 6 g Lorg/bouncycastle/math/ec/ECPoint;
68 72 3 p Lorg/bouncycastle/jce/spec/ECParameterSpec;
Exception table:
from to target type
39 49 49 Class java.lang.IllegalArgumentException
Exceptions:
throws java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
params
random
public java.security.KeyPair generateKeyPair();
descriptor: ()Ljava/security/KeyPair;
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=6, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.initialised:Z
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "EC Key Pair Generator not initialised"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.engine:Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
invokevirtual org.bouncycastle.crypto.generators.ECKeyPairGenerator.generateKeyPair:()Lorg/bouncycastle/crypto/AsymmetricCipherKeyPair;
astore 1
start local 1 3: aload 1
invokevirtual org.bouncycastle.crypto.AsymmetricCipherKeyPair.getPublic:()Lorg/bouncycastle/crypto/CipherParameters;
checkcast org.bouncycastle.crypto.params.ECPublicKeyParameters
astore 2
start local 2 4: aload 1
invokevirtual org.bouncycastle.crypto.AsymmetricCipherKeyPair.getPrivate:()Lorg/bouncycastle/crypto/CipherParameters;
checkcast org.bouncycastle.crypto.params.ECPrivateKeyParameters
astore 3
start local 3 5: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
instanceof org.bouncycastle.jce.spec.ECParameterSpec
ifeq 11
6: aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
checkcast org.bouncycastle.jce.spec.ECParameterSpec
astore 4
start local 4 7: new org.bouncycastle.jce.provider.JCEECPublicKey
dup
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
aload 2
aload 4
invokespecial org.bouncycastle.jce.provider.JCEECPublicKey.<init>:(Ljava/lang/String;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;Lorg/bouncycastle/jce/spec/ECParameterSpec;)V
astore 5
start local 5 8: new java.security.KeyPair
dup
aload 5
9: new org.bouncycastle.jce.provider.JCEECPrivateKey
dup
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
aload 3
aload 5
aload 4
invokespecial org.bouncycastle.jce.provider.JCEECPrivateKey.<init>:(Ljava/lang/String;Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;Lorg/bouncycastle/jce/provider/JCEECPublicKey;Lorg/bouncycastle/jce/spec/ECParameterSpec;)V
10: invokespecial java.security.KeyPair.<init>:(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
areturn
end local 5 end local 4 11: StackMap locals: org.bouncycastle.crypto.AsymmetricCipherKeyPair org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECPrivateKeyParameters
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
ifnonnull 15
12: new java.security.KeyPair
dup
new org.bouncycastle.jce.provider.JCEECPublicKey
dup
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
aload 2
invokespecial org.bouncycastle.jce.provider.JCEECPublicKey.<init>:(Ljava/lang/String;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;)V
13: new org.bouncycastle.jce.provider.JCEECPrivateKey
dup
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
aload 3
invokespecial org.bouncycastle.jce.provider.JCEECPrivateKey.<init>:(Ljava/lang/String;Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;)V
14: invokespecial java.security.KeyPair.<init>:(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
areturn
15: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.ecParams:Ljava/lang/Object;
checkcast java.security.spec.ECParameterSpec
astore 4
start local 4 16: new org.bouncycastle.jce.provider.JCEECPublicKey
dup
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
aload 2
aload 4
invokespecial org.bouncycastle.jce.provider.JCEECPublicKey.<init>:(Ljava/lang/String;Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;Ljava/security/spec/ECParameterSpec;)V
astore 5
start local 5 17: new java.security.KeyPair
dup
aload 5
new org.bouncycastle.jce.provider.JCEECPrivateKey
dup
aload 0
getfield org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC.algorithm:Ljava/lang/String;
aload 3
aload 5
aload 4
invokespecial org.bouncycastle.jce.provider.JCEECPrivateKey.<init>:(Ljava/lang/String;Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;Lorg/bouncycastle/jce/provider/JCEECPublicKey;Ljava/security/spec/ECParameterSpec;)V
invokespecial java.security.KeyPair.<init>:(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator$EC;
3 18 1 pair Lorg/bouncycastle/crypto/AsymmetricCipherKeyPair;
4 18 2 pub Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
5 18 3 priv Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;
7 11 4 p Lorg/bouncycastle/jce/spec/ECParameterSpec;
8 11 5 pubKey Lorg/bouncycastle/jce/provider/JCEECPublicKey;
16 18 4 p Ljava/security/spec/ECParameterSpec;
17 18 5 pubKey Lorg/bouncycastle/jce/provider/JCEECPublicKey;
}
SourceFile: "KeyPairGenerator.java"
NestHost: org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator
InnerClasses:
public EC = org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC of org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator