public class org.bouncycastle.crypto.generators.ECKeyPairGenerator implements org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator, org.bouncycastle.math.ec.ECConstants
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.generators.ECKeyPairGenerator
  super_class: java.lang.Object
{
  org.bouncycastle.crypto.params.ECDomainParameters params;
    descriptor: Lorg/bouncycastle/crypto/params/ECDomainParameters;
    flags: (0x0000) 

  java.security.SecureRandom random;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0000) 

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.generators.ECKeyPairGenerator this
         0: .line 16
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.crypto.generators.ECKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;

  public void init(org.bouncycastle.crypto.KeyGenerationParameters);
    descriptor: (Lorg/bouncycastle/crypto/KeyGenerationParameters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.ECKeyPairGenerator this
        start local 1 // org.bouncycastle.crypto.KeyGenerationParameters param
         0: .line 25
            aload 1 /* param */
            checkcast org.bouncycastle.crypto.params.ECKeyGenerationParameters
            astore 2 /* ecP */
        start local 2 // org.bouncycastle.crypto.params.ECKeyGenerationParameters ecP
         1: .line 27
            aload 0 /* this */
            aload 2 /* ecP */
            invokevirtual org.bouncycastle.crypto.params.ECKeyGenerationParameters.getRandom:()Ljava/security/SecureRandom;
            putfield org.bouncycastle.crypto.generators.ECKeyPairGenerator.random:Ljava/security/SecureRandom;
         2: .line 28
            aload 0 /* this */
            aload 2 /* ecP */
            invokevirtual org.bouncycastle.crypto.params.ECKeyGenerationParameters.getDomainParameters:()Lorg/bouncycastle/crypto/params/ECDomainParameters;
            putfield org.bouncycastle.crypto.generators.ECKeyPairGenerator.params:Lorg/bouncycastle/crypto/params/ECDomainParameters;
         3: .line 29
            return
        end local 2 // org.bouncycastle.crypto.params.ECKeyGenerationParameters ecP
        end local 1 // org.bouncycastle.crypto.KeyGenerationParameters param
        end local 0 // org.bouncycastle.crypto.generators.ECKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
            0    4     1  param  Lorg/bouncycastle/crypto/KeyGenerationParameters;
            1    4     2    ecP  Lorg/bouncycastle/crypto/params/ECKeyGenerationParameters;
    MethodParameters:
       Name  Flags
      param  

  public org.bouncycastle.crypto.AsymmetricCipherKeyPair generateKeyPair();
    descriptor: ()Lorg/bouncycastle/crypto/AsymmetricCipherKeyPair;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // org.bouncycastle.crypto.generators.ECKeyPairGenerator this
         0: .line 37
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.ECKeyPairGenerator.params:Lorg/bouncycastle/crypto/params/ECDomainParameters;
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getN:()Ljava/math/BigInteger;
            astore 1 /* n */
        start local 1 // java.math.BigInteger n
         1: .line 38
            aload 1 /* n */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 2 /* nBitLength */
        start local 2 // int nBitLength
         2: .line 43
      StackMap locals: java.math.BigInteger int
      StackMap stack:
            new java.math.BigInteger
            dup
            iload 2 /* nBitLength */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.ECKeyPairGenerator.random:Ljava/security/SecureRandom;
            invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
            astore 3 /* d */
        start local 3 // java.math.BigInteger d
         3: .line 45
            aload 3 /* d */
            getstatic org.bouncycastle.crypto.generators.ECKeyPairGenerator.ZERO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifne 2
            aload 3 /* d */
            aload 1 /* n */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
         4: .line 41
            ifge 2
         5: .line 47
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.ECKeyPairGenerator.params:Lorg/bouncycastle/crypto/params/ECDomainParameters;
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getG:()Lorg/bouncycastle/math/ec/ECPoint;
            aload 3 /* d */
            invokevirtual org.bouncycastle.math.ec.ECPoint.multiply:(Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
            astore 4 /* Q */
        start local 4 // org.bouncycastle.math.ec.ECPoint Q
         6: .line 49
            new org.bouncycastle.crypto.AsymmetricCipherKeyPair
            dup
         7: .line 50
            new org.bouncycastle.crypto.params.ECPublicKeyParameters
            dup
            aload 4 /* Q */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.ECKeyPairGenerator.params:Lorg/bouncycastle/crypto/params/ECDomainParameters;
            invokespecial org.bouncycastle.crypto.params.ECPublicKeyParameters.<init>:(Lorg/bouncycastle/math/ec/ECPoint;Lorg/bouncycastle/crypto/params/ECDomainParameters;)V
         8: .line 51
            new org.bouncycastle.crypto.params.ECPrivateKeyParameters
            dup
            aload 3 /* d */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.ECKeyPairGenerator.params:Lorg/bouncycastle/crypto/params/ECDomainParameters;
            invokespecial org.bouncycastle.crypto.params.ECPrivateKeyParameters.<init>:(Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/ECDomainParameters;)V
         9: .line 49
            invokespecial org.bouncycastle.crypto.AsymmetricCipherKeyPair.<init>:(Lorg/bouncycastle/crypto/CipherParameters;Lorg/bouncycastle/crypto/CipherParameters;)V
            areturn
        end local 4 // org.bouncycastle.math.ec.ECPoint Q
        end local 3 // java.math.BigInteger d
        end local 2 // int nBitLength
        end local 1 // java.math.BigInteger n
        end local 0 // org.bouncycastle.crypto.generators.ECKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/bouncycastle/crypto/generators/ECKeyPairGenerator;
            1   10     1           n  Ljava/math/BigInteger;
            2   10     2  nBitLength  I
            3   10     3           d  Ljava/math/BigInteger;
            6   10     4           Q  Lorg/bouncycastle/math/ec/ECPoint;
}
SourceFile: "ECKeyPairGenerator.java"