public class org.bouncycastle.jce.provider.JCEDHKeyAgreement extends javax.crypto.KeyAgreementSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.provider.JCEDHKeyAgreement
  super_class: javax.crypto.KeyAgreementSpi
{
  private java.math.BigInteger x;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE

  private java.math.BigInteger p;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE

  private java.math.BigInteger g;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE

  private java.math.BigInteger result;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE

  private static final java.util.Hashtable algorithms;
    descriptor: Ljava/util/Hashtable;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=0
         0: .line 35
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putstatic org.bouncycastle.jce.provider.JCEDHKeyAgreement.algorithms:Ljava/util/Hashtable;
         1: .line 39
            new java.lang.Integer
            dup
            bipush 64
            invokespecial java.lang.Integer.<init>:(I)V
            astore 0 /* i64 */
        start local 0 // java.lang.Integer i64
         2: .line 40
            new java.lang.Integer
            dup
            sipush 192
            invokespecial java.lang.Integer.<init>:(I)V
            astore 1 /* i192 */
        start local 1 // java.lang.Integer i192
         3: .line 41
            new java.lang.Integer
            dup
            sipush 128
            invokespecial java.lang.Integer.<init>:(I)V
            astore 2 /* i128 */
        start local 2 // java.lang.Integer i128
         4: .line 42
            new java.lang.Integer
            dup
            sipush 256
            invokespecial java.lang.Integer.<init>:(I)V
            astore 3 /* i256 */
        start local 3 // java.lang.Integer i256
         5: .line 44
            getstatic org.bouncycastle.jce.provider.JCEDHKeyAgreement.algorithms:Ljava/util/Hashtable;
            ldc "DES"
            aload 0 /* i64 */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 45
            getstatic org.bouncycastle.jce.provider.JCEDHKeyAgreement.algorithms:Ljava/util/Hashtable;
            ldc "DESEDE"
            aload 1 /* i192 */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 46
            getstatic org.bouncycastle.jce.provider.JCEDHKeyAgreement.algorithms:Ljava/util/Hashtable;
            ldc "BLOWFISH"
            aload 2 /* i128 */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 47
            getstatic org.bouncycastle.jce.provider.JCEDHKeyAgreement.algorithms:Ljava/util/Hashtable;
            ldc "AES"
            aload 3 /* i256 */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.lang.Integer i256
        end local 2 // java.lang.Integer i128
        end local 1 // java.lang.Integer i192
        end local 0 // java.lang.Integer i64
         9: .line 48
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2    9     0   i64  Ljava/lang/Integer;
            3    9     1  i192  Ljava/lang/Integer;
            4    9     2  i128  Ljava/lang/Integer;
            5    9     3  i256  Ljava/lang/Integer;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
         0: .line 27
            aload 0 /* this */
            invokespecial javax.crypto.KeyAgreementSpi.<init>:()V
            return
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;

  private byte[] bigIntToBytes(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
        start local 1 // java.math.BigInteger r
         0: .line 53
            aload 1 /* r */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 2 /* tmp */
        start local 2 // byte[] tmp
         1: .line 55
            aload 2 /* tmp */
            iconst_0
            baload
            ifne 5
         2: .line 57
            aload 2 /* tmp */
            arraylength
            iconst_1
            isub
            newarray 8
            astore 3 /* ntmp */
        start local 3 // byte[] ntmp
         3: .line 59
            aload 2 /* tmp */
            iconst_1
            aload 3 /* ntmp */
            iconst_0
            aload 3 /* ntmp */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 60
            aload 3 /* ntmp */
            areturn
        end local 3 // byte[] ntmp
         5: .line 63
      StackMap locals: byte[]
      StackMap stack:
            aload 2 /* tmp */
            areturn
        end local 2 // byte[] tmp
        end local 1 // java.math.BigInteger r
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;
            0    6     1     r  Ljava/math/BigInteger;
            1    6     2   tmp  [B
            3    5     3  ntmp  [B
    MethodParameters:
      Name  Flags
      r     

  protected java.security.Key engineDoPhase(java.security.Key, boolean);
    descriptor: (Ljava/security/Key;Z)Ljava/security/Key;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
        start local 1 // java.security.Key key
        start local 2 // boolean lastPhase
         0: .line 71
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
            ifnonnull 2
         1: .line 73
            new java.lang.IllegalStateException
            dup
            ldc "Diffie-Hellman not initialised."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 76
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            instanceof javax.crypto.interfaces.DHPublicKey
            ifne 4
         3: .line 78
            new java.security.InvalidKeyException
            dup
            ldc "DHKeyAgreement doPhase requires DHPublicKey"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 80
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            checkcast javax.crypto.interfaces.DHPublicKey
            astore 3 /* pubKey */
        start local 3 // javax.crypto.interfaces.DHPublicKey pubKey
         5: .line 82
            aload 3 /* pubKey */
            invokeinterface javax.crypto.interfaces.DHPublicKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            invokevirtual javax.crypto.spec.DHParameterSpec.getG:()Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.g:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 6
            aload 3 /* pubKey */
            invokeinterface javax.crypto.interfaces.DHPublicKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            invokevirtual javax.crypto.spec.DHParameterSpec.getP:()Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.p:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifne 7
         6: .line 84
      StackMap locals: javax.crypto.interfaces.DHPublicKey
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "DHPublicKey not for this KeyAgreement!"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 87
      StackMap locals:
      StackMap stack:
            iload 2 /* lastPhase */
            ifeq 10
         8: .line 89
            aload 0 /* this */
            aload 1 /* key */
            checkcast javax.crypto.interfaces.DHPublicKey
            invokeinterface javax.crypto.interfaces.DHPublicKey.getY:()Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.p:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
         9: .line 90
            aconst_null
            areturn
        10: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            checkcast javax.crypto.interfaces.DHPublicKey
            invokeinterface javax.crypto.interfaces.DHPublicKey.getY:()Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.p:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
        11: .line 97
            new org.bouncycastle.jce.provider.JCEDHPublicKey
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
            aload 3 /* pubKey */
            invokeinterface javax.crypto.interfaces.DHPublicKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            invokespecial org.bouncycastle.jce.provider.JCEDHPublicKey.<init>:(Ljava/math/BigInteger;Ljavax/crypto/spec/DHParameterSpec;)V
            areturn
        end local 3 // javax.crypto.interfaces.DHPublicKey pubKey
        end local 2 // boolean lastPhase
        end local 1 // java.security.Key key
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;
            0   12     1        key  Ljava/security/Key;
            0   12     2  lastPhase  Z
            5   12     3     pubKey  Ljavax/crypto/interfaces/DHPublicKey;
    Exceptions:
      throws java.security.InvalidKeyException, java.lang.IllegalStateException
    MethodParameters:
           Name  Flags
      key        
      lastPhase  

  protected byte[] engineGenerateSecret();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
         0: .line 103
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
            ifnonnull 2
         1: .line 105
            new java.lang.IllegalStateException
            dup
            ldc "Diffie-Hellman not initialised."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
            invokevirtual org.bouncycastle.jce.provider.JCEDHKeyAgreement.bigIntToBytes:(Ljava/math/BigInteger;)[B
            areturn
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;
    Exceptions:
      throws java.lang.IllegalStateException

  protected int engineGenerateSecret(byte[], int);
    descriptor: ([BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
        start local 1 // byte[] sharedSecret
        start local 2 // int offset
         0: .line 116
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
            ifnonnull 2
         1: .line 118
            new java.lang.IllegalStateException
            dup
            ldc "Diffie-Hellman not initialised."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
            invokevirtual org.bouncycastle.jce.provider.JCEDHKeyAgreement.bigIntToBytes:(Ljava/math/BigInteger;)[B
            astore 3 /* secret */
        start local 3 // byte[] secret
         3: .line 123
            aload 1 /* sharedSecret */
            arraylength
            iload 2 /* offset */
            isub
            aload 3 /* secret */
            arraylength
            if_icmpge 5
         4: .line 125
            new javax.crypto.ShortBufferException
            dup
            ldc "DHKeyAgreement - buffer too short"
            invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 128
      StackMap locals: byte[]
      StackMap stack:
            aload 3 /* secret */
            iconst_0
            aload 1 /* sharedSecret */
            iload 2 /* offset */
            aload 3 /* secret */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 130
            aload 3 /* secret */
            arraylength
            ireturn
        end local 3 // byte[] secret
        end local 2 // int offset
        end local 1 // byte[] sharedSecret
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;
            0    7     1  sharedSecret  [B
            0    7     2        offset  I
            3    7     3        secret  [B
    Exceptions:
      throws java.lang.IllegalStateException, javax.crypto.ShortBufferException
    MethodParameters:
              Name  Flags
      sharedSecret  
      offset        

  protected javax.crypto.SecretKey engineGenerateSecret(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljavax/crypto/SecretKey;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
        start local 1 // java.lang.String algorithm
         0: .line 136
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
            ifnonnull 2
         1: .line 138
            new java.lang.IllegalStateException
            dup
            ldc "Diffie-Hellman not initialised."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 141
      StackMap locals:
      StackMap stack:
            aload 1 /* algorithm */
            invokestatic org.bouncycastle.util.Strings.toUpperCase:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* algKey */
        start local 2 // java.lang.String algKey
         3: .line 142
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
            invokevirtual org.bouncycastle.jce.provider.JCEDHKeyAgreement.bigIntToBytes:(Ljava/math/BigInteger;)[B
            astore 3 /* res */
        start local 3 // byte[] res
         4: .line 144
            getstatic org.bouncycastle.jce.provider.JCEDHKeyAgreement.algorithms:Ljava/util/Hashtable;
            aload 2 /* algKey */
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifeq 11
         5: .line 146
            getstatic org.bouncycastle.jce.provider.JCEDHKeyAgreement.algorithms:Ljava/util/Hashtable;
            aload 2 /* algKey */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 4 /* length */
        start local 4 // java.lang.Integer length
         6: .line 148
            aload 4 /* length */
            invokevirtual java.lang.Integer.intValue:()I
            bipush 8
            idiv
            newarray 8
            astore 5 /* key */
        start local 5 // byte[] key
         7: .line 149
            aload 3 /* res */
            iconst_0
            aload 5 /* key */
            iconst_0
            aload 5 /* key */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 151
            aload 2 /* algKey */
            ldc "DES"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 10
         9: .line 153
            aload 5 /* key */
            invokestatic org.bouncycastle.crypto.params.DESParameters.setOddParity:([B)V
        10: .line 156
      StackMap locals: org.bouncycastle.jce.provider.JCEDHKeyAgreement java.lang.String java.lang.String byte[] java.lang.Integer byte[]
      StackMap stack:
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 5 /* key */
            aload 1 /* algorithm */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            areturn
        end local 5 // byte[] key
        end local 4 // java.lang.Integer length
        11: .line 159
      StackMap locals:
      StackMap stack:
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 3 /* res */
            aload 1 /* algorithm */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            areturn
        end local 3 // byte[] res
        end local 2 // java.lang.String algKey
        end local 1 // java.lang.String algorithm
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;
            0   12     1  algorithm  Ljava/lang/String;
            3   12     2     algKey  Ljava/lang/String;
            4   12     3        res  [B
            6   11     4     length  Ljava/lang/Integer;
            7   11     5        key  [B
    MethodParameters:
           Name  Flags
      algorithm  

  protected void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
        start local 1 // java.security.Key key
        start local 2 // java.security.spec.AlgorithmParameterSpec params
        start local 3 // java.security.SecureRandom random
         0: .line 168
            aload 1 /* key */
            instanceof javax.crypto.interfaces.DHPrivateKey
            ifne 2
         1: .line 170
            new java.security.InvalidKeyException
            dup
            ldc "DHKeyAgreement requires DHPrivateKey for initialisation"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 172
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            checkcast javax.crypto.interfaces.DHPrivateKey
            astore 4 /* privKey */
        start local 4 // javax.crypto.interfaces.DHPrivateKey privKey
         3: .line 174
            aload 2 /* params */
            ifnull 10
         4: .line 176
            aload 2 /* params */
            instanceof javax.crypto.spec.DHParameterSpec
            ifne 6
         5: .line 178
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "DHKeyAgreement only accepts DHParameterSpec"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 180
      StackMap locals: javax.crypto.interfaces.DHPrivateKey
      StackMap stack:
            aload 2 /* params */
            checkcast javax.crypto.spec.DHParameterSpec
            astore 5 /* p */
        start local 5 // javax.crypto.spec.DHParameterSpec p
         7: .line 182
            aload 0 /* this */
            aload 5 /* p */
            invokevirtual javax.crypto.spec.DHParameterSpec.getP:()Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.p:Ljava/math/BigInteger;
         8: .line 183
            aload 0 /* this */
            aload 5 /* p */
            invokevirtual javax.crypto.spec.DHParameterSpec.getG:()Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.g:Ljava/math/BigInteger;
        end local 5 // javax.crypto.spec.DHParameterSpec p
         9: .line 184
            goto 12
        10: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* privKey */
            invokeinterface javax.crypto.interfaces.DHPrivateKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            invokevirtual javax.crypto.spec.DHParameterSpec.getP:()Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.p:Ljava/math/BigInteger;
        11: .line 188
            aload 0 /* this */
            aload 4 /* privKey */
            invokeinterface javax.crypto.interfaces.DHPrivateKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            invokevirtual javax.crypto.spec.DHParameterSpec.getG:()Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.g:Ljava/math/BigInteger;
        12: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 4 /* privKey */
            invokeinterface javax.crypto.interfaces.DHPrivateKey.getX:()Ljava/math/BigInteger;
            dup_x1
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
        13: .line 192
            return
        end local 4 // javax.crypto.interfaces.DHPrivateKey privKey
        end local 3 // java.security.SecureRandom random
        end local 2 // java.security.spec.AlgorithmParameterSpec params
        end local 1 // java.security.Key key
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;
            0   14     1      key  Ljava/security/Key;
            0   14     2   params  Ljava/security/spec/AlgorithmParameterSpec;
            0   14     3   random  Ljava/security/SecureRandom;
            3   14     4  privKey  Ljavax/crypto/interfaces/DHPrivateKey;
            7    9     5        p  Ljavax/crypto/spec/DHParameterSpec;
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      key     
      params  
      random  

  protected void engineInit(java.security.Key, java.security.SecureRandom);
    descriptor: (Ljava/security/Key;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
        start local 1 // java.security.Key key
        start local 2 // java.security.SecureRandom random
         0: .line 199
            aload 1 /* key */
            instanceof javax.crypto.interfaces.DHPrivateKey
            ifne 2
         1: .line 201
            new java.security.InvalidKeyException
            dup
            ldc "DHKeyAgreement requires DHPrivateKey"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 204
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            checkcast javax.crypto.interfaces.DHPrivateKey
            astore 3 /* privKey */
        start local 3 // javax.crypto.interfaces.DHPrivateKey privKey
         3: .line 206
            aload 0 /* this */
            aload 3 /* privKey */
            invokeinterface javax.crypto.interfaces.DHPrivateKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            invokevirtual javax.crypto.spec.DHParameterSpec.getP:()Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.p:Ljava/math/BigInteger;
         4: .line 207
            aload 0 /* this */
            aload 3 /* privKey */
            invokeinterface javax.crypto.interfaces.DHPrivateKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            invokevirtual javax.crypto.spec.DHParameterSpec.getG:()Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.g:Ljava/math/BigInteger;
         5: .line 208
            aload 0 /* this */
            aload 0 /* this */
            aload 3 /* privKey */
            invokeinterface javax.crypto.interfaces.DHPrivateKey.getX:()Ljava/math/BigInteger;
            dup_x1
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.result:Ljava/math/BigInteger;
            putfield org.bouncycastle.jce.provider.JCEDHKeyAgreement.x:Ljava/math/BigInteger;
         6: .line 209
            return
        end local 3 // javax.crypto.interfaces.DHPrivateKey privKey
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.Key key
        end local 0 // org.bouncycastle.jce.provider.JCEDHKeyAgreement this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/bouncycastle/jce/provider/JCEDHKeyAgreement;
            0    7     1      key  Ljava/security/Key;
            0    7     2   random  Ljava/security/SecureRandom;
            3    7     3  privKey  Ljavax/crypto/interfaces/DHPrivateKey;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      key     
      random  
}
SourceFile: "JCEDHKeyAgreement.java"