public class com.jcraft.jsch.jce.ECDHN implements com.jcraft.jsch.ECDH
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.jcraft.jsch.jce.ECDHN
  super_class: java.lang.Object
{
  byte[] Q_array;
    descriptor: [B
    flags: (0x0000) 

  java.security.interfaces.ECPublicKey publicKey;
    descriptor: Ljava/security/interfaces/ECPublicKey;
    flags: (0x0000) 

  private javax.crypto.KeyAgreement myKeyAgree;
    descriptor: Ljavax/crypto/KeyAgreement;
    flags: (0x0002) ACC_PRIVATE

  private static java.math.BigInteger two;
    descriptor: Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.math.BigInteger three;
    descriptor: Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 68
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            putstatic com.jcraft.jsch.jce.ECDHN.two:Ljava/math/BigInteger;
         1: .line 69
            getstatic com.jcraft.jsch.jce.ECDHN.two:Ljava/math/BigInteger;
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            putstatic com.jcraft.jsch.jce.ECDHN.three:Ljava/math/BigInteger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.jcraft.jsch.jce.ECDHN this
         0: .line 38
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/jcraft/jsch/jce/ECDHN;

  public void init(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.jcraft.jsch.jce.ECDHN this
        start local 1 // int size
         0: .line 44
            aload 0 /* this */
            ldc "ECDH"
            invokestatic javax.crypto.KeyAgreement.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;
            putfield com.jcraft.jsch.jce.ECDHN.myKeyAgree:Ljavax/crypto/KeyAgreement;
         1: .line 45
            new com.jcraft.jsch.jce.KeyPairGenECDSA
            dup
            invokespecial com.jcraft.jsch.jce.KeyPairGenECDSA.<init>:()V
            astore 2 /* kpair */
        start local 2 // com.jcraft.jsch.jce.KeyPairGenECDSA kpair
         2: .line 46
            aload 2 /* kpair */
            iload 1 /* size */
            invokevirtual com.jcraft.jsch.jce.KeyPairGenECDSA.init:(I)V
         3: .line 47
            aload 0 /* this */
            aload 2 /* kpair */
            invokevirtual com.jcraft.jsch.jce.KeyPairGenECDSA.getPublicKey:()Ljava/security/interfaces/ECPublicKey;
            putfield com.jcraft.jsch.jce.ECDHN.publicKey:Ljava/security/interfaces/ECPublicKey;
         4: .line 48
            aload 2 /* kpair */
            invokevirtual com.jcraft.jsch.jce.KeyPairGenECDSA.getR:()[B
            astore 3 /* r */
        start local 3 // byte[] r
         5: .line 49
            aload 2 /* kpair */
            invokevirtual com.jcraft.jsch.jce.KeyPairGenECDSA.getS:()[B
            astore 4 /* s */
        start local 4 // byte[] s
         6: .line 50
            aload 0 /* this */
            aload 0 /* this */
            aload 3 /* r */
            aload 4 /* s */
            invokevirtual com.jcraft.jsch.jce.ECDHN.toPoint:([B[B)[B
            putfield com.jcraft.jsch.jce.ECDHN.Q_array:[B
         7: .line 51
            aload 0 /* this */
            getfield com.jcraft.jsch.jce.ECDHN.myKeyAgree:Ljavax/crypto/KeyAgreement;
            aload 2 /* kpair */
            invokevirtual com.jcraft.jsch.jce.KeyPairGenECDSA.getPrivateKey:()Ljava/security/interfaces/ECPrivateKey;
            invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;)V
         8: .line 52
            return
        end local 4 // byte[] s
        end local 3 // byte[] r
        end local 2 // com.jcraft.jsch.jce.KeyPairGenECDSA kpair
        end local 1 // int size
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lcom/jcraft/jsch/jce/ECDHN;
            0    9     1   size  I
            2    9     2  kpair  Lcom/jcraft/jsch/jce/KeyPairGenECDSA;
            5    9     3      r  [B
            6    9     4      s  [B
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      size  

  public byte[] getQ();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.jcraft.jsch.jce.ECDHN this
         0: .line 55
            aload 0 /* this */
            getfield com.jcraft.jsch.jce.ECDHN.Q_array:[B
            areturn
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/jcraft/jsch/jce/ECDHN;
    Exceptions:
      throws java.lang.Exception

  public byte[] getSecret(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=3
        start local 0 // com.jcraft.jsch.jce.ECDHN this
        start local 1 // byte[] r
        start local 2 // byte[] s
         0: .line 60
            ldc "EC"
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 3 /* kf */
        start local 3 // java.security.KeyFactory kf
         1: .line 61
            new java.security.spec.ECPoint
            dup
            new java.math.BigInteger
            dup
            iconst_1
            aload 1 /* r */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            new java.math.BigInteger
            dup
            iconst_1
            aload 2 /* s */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            invokespecial java.security.spec.ECPoint.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            astore 4 /* w */
        start local 4 // java.security.spec.ECPoint w
         2: .line 62
            new java.security.spec.ECPublicKeySpec
            dup
            aload 4 /* w */
            aload 0 /* this */
            getfield com.jcraft.jsch.jce.ECDHN.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            invokespecial java.security.spec.ECPublicKeySpec.<init>:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
            astore 5 /* spec */
        start local 5 // java.security.spec.ECPublicKeySpec spec
         3: .line 63
            aload 3 /* kf */
            aload 5 /* spec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            astore 6 /* theirPublicKey */
        start local 6 // java.security.PublicKey theirPublicKey
         4: .line 64
            aload 0 /* this */
            getfield com.jcraft.jsch.jce.ECDHN.myKeyAgree:Ljavax/crypto/KeyAgreement;
            aload 6 /* theirPublicKey */
            iconst_1
            invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
            pop
         5: .line 65
            aload 0 /* this */
            getfield com.jcraft.jsch.jce.ECDHN.myKeyAgree:Ljavax/crypto/KeyAgreement;
            invokevirtual javax.crypto.KeyAgreement.generateSecret:()[B
            areturn
        end local 6 // java.security.PublicKey theirPublicKey
        end local 5 // java.security.spec.ECPublicKeySpec spec
        end local 4 // java.security.spec.ECPoint w
        end local 3 // java.security.KeyFactory kf
        end local 2 // byte[] s
        end local 1 // byte[] r
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0            this  Lcom/jcraft/jsch/jce/ECDHN;
            0    6     1               r  [B
            0    6     2               s  [B
            1    6     3              kf  Ljava/security/KeyFactory;
            2    6     4               w  Ljava/security/spec/ECPoint;
            3    6     5            spec  Ljava/security/spec/ECPublicKeySpec;
            4    6     6  theirPublicKey  Ljava/security/PublicKey;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      r     
      s     

  public boolean validate(byte[], byte[]);
    descriptor: ([B[B)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=12, args_size=3
        start local 0 // com.jcraft.jsch.jce.ECDHN this
        start local 1 // byte[] r
        start local 2 // byte[] s
         0: .line 75
            new java.math.BigInteger
            dup
            iconst_1
            aload 1 /* r */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            astore 3 /* x */
        start local 3 // java.math.BigInteger x
         1: .line 76
            new java.math.BigInteger
            dup
            iconst_1
            aload 2 /* s */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            astore 4 /* y */
        start local 4 // java.math.BigInteger y
         2: .line 80
            new java.security.spec.ECPoint
            dup
            aload 3 /* x */
            aload 4 /* y */
            invokespecial java.security.spec.ECPoint.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            astore 5 /* w */
        start local 5 // java.security.spec.ECPoint w
         3: .line 81
            aload 5 /* w */
            getstatic java.security.spec.ECPoint.POINT_INFINITY:Ljava/security/spec/ECPoint;
            invokevirtual java.security.spec.ECPoint.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 82
            iconst_0
            ireturn
         5: .line 91
      StackMap locals: java.math.BigInteger java.math.BigInteger java.security.spec.ECPoint
      StackMap stack:
            aload 0 /* this */
            getfield com.jcraft.jsch.jce.ECDHN.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            astore 6 /* params */
        start local 6 // java.security.spec.ECParameterSpec params
         6: .line 92
            aload 6 /* params */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            astore 7 /* curve */
        start local 7 // java.security.spec.EllipticCurve curve
         7: .line 93
            aload 7 /* curve */
            invokevirtual java.security.spec.EllipticCurve.getField:()Ljava/security/spec/ECField;
            checkcast java.security.spec.ECFieldFp
            invokevirtual java.security.spec.ECFieldFp.getP:()Ljava/math/BigInteger;
            astore 8 /* p */
        start local 8 // java.math.BigInteger p
         8: .line 96
            aload 8 /* p */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 9 /* p_sub1 */
        start local 9 // java.math.BigInteger p_sub1
         9: .line 97
            aload 3 /* x */
            aload 9 /* p_sub1 */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifgt 10
            aload 4 /* y */
            aload 9 /* p_sub1 */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifle 11
        10: .line 98
      StackMap locals: com.jcraft.jsch.jce.ECDHN byte[] byte[] java.math.BigInteger java.math.BigInteger java.security.spec.ECPoint java.security.spec.ECParameterSpec java.security.spec.EllipticCurve java.math.BigInteger java.math.BigInteger
      StackMap stack:
            iconst_0
            ireturn
        11: .line 102
      StackMap locals:
      StackMap stack:
            aload 3 /* x */
            aload 7 /* curve */
            invokevirtual java.security.spec.EllipticCurve.getA:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        12: .line 103
            aload 7 /* curve */
            invokevirtual java.security.spec.EllipticCurve.getB:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        13: .line 104
            aload 3 /* x */
            getstatic com.jcraft.jsch.jce.ECDHN.three:Ljava/math/BigInteger;
            aload 8 /* p */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        14: .line 105
            aload 8 /* p */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        15: .line 102
            astore 10 /* tmp */
        start local 10 // java.math.BigInteger tmp
        16: .line 106
            aload 4 /* y */
            getstatic com.jcraft.jsch.jce.ECDHN.two:Ljava/math/BigInteger;
            aload 8 /* p */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 11 /* y_2 */
        start local 11 // java.math.BigInteger y_2
        17: .line 107
            aload 11 /* y_2 */
            aload 10 /* tmp */
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifne 19
        18: .line 108
            iconst_0
            ireturn
        19: .line 119
      StackMap locals: java.math.BigInteger java.math.BigInteger
      StackMap stack:
            iconst_1
            ireturn
        end local 11 // java.math.BigInteger y_2
        end local 10 // java.math.BigInteger tmp
        end local 9 // java.math.BigInteger p_sub1
        end local 8 // java.math.BigInteger p
        end local 7 // java.security.spec.EllipticCurve curve
        end local 6 // java.security.spec.ECParameterSpec params
        end local 5 // java.security.spec.ECPoint w
        end local 4 // java.math.BigInteger y
        end local 3 // java.math.BigInteger x
        end local 2 // byte[] s
        end local 1 // byte[] r
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   20     0    this  Lcom/jcraft/jsch/jce/ECDHN;
            0   20     1       r  [B
            0   20     2       s  [B
            1   20     3       x  Ljava/math/BigInteger;
            2   20     4       y  Ljava/math/BigInteger;
            3   20     5       w  Ljava/security/spec/ECPoint;
            6   20     6  params  Ljava/security/spec/ECParameterSpec;
            7   20     7   curve  Ljava/security/spec/EllipticCurve;
            8   20     8       p  Ljava/math/BigInteger;
            9   20     9  p_sub1  Ljava/math/BigInteger;
           16   20    10     tmp  Ljava/math/BigInteger;
           17   20    11     y_2  Ljava/math/BigInteger;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      r     
      s     

  private byte[] toPoint(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // com.jcraft.jsch.jce.ECDHN this
        start local 1 // byte[] r_array
        start local 2 // byte[] s_array
         0: .line 123
            iconst_1
            aload 1 /* r_array */
            arraylength
            iadd
            aload 2 /* s_array */
            arraylength
            iadd
            newarray 8
            astore 3 /* tmp */
        start local 3 // byte[] tmp
         1: .line 124
            aload 3 /* tmp */
            iconst_0
            iconst_4
            bastore
         2: .line 125
            aload 1 /* r_array */
            iconst_0
            aload 3 /* tmp */
            iconst_1
            aload 1 /* r_array */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 126
            aload 2 /* s_array */
            iconst_0
            aload 3 /* tmp */
            iconst_1
            aload 1 /* r_array */
            arraylength
            iadd
            aload 2 /* s_array */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 127
            aload 3 /* tmp */
            areturn
        end local 3 // byte[] tmp
        end local 2 // byte[] s_array
        end local 1 // byte[] r_array
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/jcraft/jsch/jce/ECDHN;
            0    5     1  r_array  [B
            0    5     2  s_array  [B
            1    5     3      tmp  [B
    MethodParameters:
         Name  Flags
      r_array  
      s_array  

  private byte[] insert0(byte[]);
    descriptor: ([B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.jcraft.jsch.jce.ECDHN this
        start local 1 // byte[] buf
         0: .line 130
            aload 1 /* buf */
            iconst_0
            baload
            sipush 128
            iand
            ifne 1
            aload 1 /* buf */
            areturn
         1: .line 131
      StackMap locals:
      StackMap stack:
            aload 1 /* buf */
            arraylength
            iconst_1
            iadd
            newarray 8
            astore 2 /* tmp */
        start local 2 // byte[] tmp
         2: .line 132
            aload 1 /* buf */
            iconst_0
            aload 2 /* tmp */
            iconst_1
            aload 1 /* buf */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 133
            aload 0 /* this */
            aload 1 /* buf */
            invokevirtual com.jcraft.jsch.jce.ECDHN.bzero:([B)V
         4: .line 134
            aload 2 /* tmp */
            areturn
        end local 2 // byte[] tmp
        end local 1 // byte[] buf
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/jcraft/jsch/jce/ECDHN;
            0    5     1   buf  [B
            2    5     2   tmp  [B
    MethodParameters:
      Name  Flags
      buf   

  private byte[] chop0(byte[]);
    descriptor: ([B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.jcraft.jsch.jce.ECDHN this
        start local 1 // byte[] buf
         0: .line 137
            aload 1 /* buf */
            iconst_0
            baload
            ifeq 1
            aload 1 /* buf */
            areturn
         1: .line 138
      StackMap locals:
      StackMap stack:
            aload 1 /* buf */
            arraylength
            iconst_1
            isub
            newarray 8
            astore 2 /* tmp */
        start local 2 // byte[] tmp
         2: .line 139
            aload 1 /* buf */
            iconst_1
            aload 2 /* tmp */
            iconst_0
            aload 2 /* tmp */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 140
            aload 0 /* this */
            aload 1 /* buf */
            invokevirtual com.jcraft.jsch.jce.ECDHN.bzero:([B)V
         4: .line 141
            aload 2 /* tmp */
            areturn
        end local 2 // byte[] tmp
        end local 1 // byte[] buf
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/jcraft/jsch/jce/ECDHN;
            0    5     1   buf  [B
            2    5     2   tmp  [B
    MethodParameters:
      Name  Flags
      buf   

  private void bzero(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.jcraft.jsch.jce.ECDHN this
        start local 1 // byte[] buf
         0: .line 144
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 3
      StackMap locals: int
      StackMap stack:
         2: aload 1 /* buf */
            iload 2 /* i */
            iconst_0
            bastore
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         3: iload 2 /* i */
            aload 1 /* buf */
            arraylength
            if_icmplt 2
        end local 2 // int i
         4: .line 145
            return
        end local 1 // byte[] buf
        end local 0 // com.jcraft.jsch.jce.ECDHN this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/jcraft/jsch/jce/ECDHN;
            0    5     1   buf  [B
            1    4     2     i  I
    MethodParameters:
      Name  Flags
      buf   
}
SourceFile: "ECDHN.java"