public abstract class com.jcraft.jsch.DHECN extends com.jcraft.jsch.KeyExchange
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.jcraft.jsch.DHECN
  super_class: com.jcraft.jsch.KeyExchange
{
  private static final int SSH_MSG_KEX_ECDH_INIT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 30

  private static final int SSH_MSG_KEX_ECDH_REPLY;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 31

  private int state;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  byte[] Q_C;
    descriptor: [B
    flags: (0x0000) 

  byte[] V_S;
    descriptor: [B
    flags: (0x0000) 

  byte[] V_C;
    descriptor: [B
    flags: (0x0000) 

  byte[] I_S;
    descriptor: [B
    flags: (0x0000) 

  byte[] I_C;
    descriptor: [B
    flags: (0x0000) 

  byte[] e;
    descriptor: [B
    flags: (0x0000) 

  private com.jcraft.jsch.Buffer buf;
    descriptor: Lcom/jcraft/jsch/Buffer;
    flags: (0x0002) ACC_PRIVATE

  private com.jcraft.jsch.Packet packet;
    descriptor: Lcom/jcraft/jsch/Packet;
    flags: (0x0002) ACC_PRIVATE

  private com.jcraft.jsch.ECDH ecdh;
    descriptor: Lcom/jcraft/jsch/ECDH;
    flags: (0x0002) ACC_PRIVATE

  protected java.lang.String sha_name;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected int key_size;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

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

  public void init(com.jcraft.jsch.Session, byte[], byte[], byte[], byte[]);
    descriptor: (Lcom/jcraft/jsch/Session;[B[B[B[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=6
        start local 0 // com.jcraft.jsch.DHECN this
        start local 1 // com.jcraft.jsch.Session session
        start local 2 // byte[] V_S
        start local 3 // byte[] V_C
        start local 4 // byte[] I_S
        start local 5 // byte[] I_C
         0: .line 57
            aload 0 /* this */
            aload 1 /* session */
            putfield com.jcraft.jsch.DHECN.session:Lcom/jcraft/jsch/Session;
         1: .line 58
            aload 0 /* this */
            aload 2 /* V_S */
            putfield com.jcraft.jsch.DHECN.V_S:[B
         2: .line 59
            aload 0 /* this */
            aload 3 /* V_C */
            putfield com.jcraft.jsch.DHECN.V_C:[B
         3: .line 60
            aload 0 /* this */
            aload 4 /* I_S */
            putfield com.jcraft.jsch.DHECN.I_S:[B
         4: .line 61
            aload 0 /* this */
            aload 5 /* I_C */
            putfield com.jcraft.jsch.DHECN.I_C:[B
         5: .line 64
            aload 1 /* session */
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.sha_name:Ljava/lang/String;
            invokevirtual com.jcraft.jsch.Session.getConfig:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 6 /* c */
        start local 6 // java.lang.Class c
         6: .line 65
            aload 0 /* this */
            aload 6 /* c */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast com.jcraft.jsch.HASH
            putfield com.jcraft.jsch.DHECN.sha:Lcom/jcraft/jsch/HASH;
         7: .line 66
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.sha:Lcom/jcraft/jsch/HASH;
            invokeinterface com.jcraft.jsch.HASH.init:()V
        end local 6 // java.lang.Class c
         8: .line 67
            goto 11
         9: .line 68
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        10: .line 69
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 6 /* e */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/Object;)V
        end local 6 // java.lang.Exception e
        11: .line 72
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.jcraft.jsch.Buffer
            dup
            invokespecial com.jcraft.jsch.Buffer.<init>:()V
            putfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
        12: .line 73
            aload 0 /* this */
            new com.jcraft.jsch.Packet
            dup
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            invokespecial com.jcraft.jsch.Packet.<init>:(Lcom/jcraft/jsch/Buffer;)V
            putfield com.jcraft.jsch.DHECN.packet:Lcom/jcraft/jsch/Packet;
        13: .line 75
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.packet:Lcom/jcraft/jsch/Packet;
            invokevirtual com.jcraft.jsch.Packet.reset:()V
        14: .line 76
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            bipush 30
            invokevirtual com.jcraft.jsch.Buffer.putByte:(B)V
        15: .line 79
            aload 1 /* session */
            ldc "ecdh-sha2-nistp"
            invokevirtual com.jcraft.jsch.Session.getConfig:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 6 /* c */
        start local 6 // java.lang.Class c
        16: .line 80
            aload 0 /* this */
            aload 6 /* c */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast com.jcraft.jsch.ECDH
            putfield com.jcraft.jsch.DHECN.ecdh:Lcom/jcraft/jsch/ECDH;
        17: .line 81
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.ecdh:Lcom/jcraft/jsch/ECDH;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.key_size:I
            invokeinterface com.jcraft.jsch.ECDH.init:(I)V
        18: .line 83
            aload 0 /* this */
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.ecdh:Lcom/jcraft/jsch/ECDH;
            invokeinterface com.jcraft.jsch.ECDH.getQ:()[B
            putfield com.jcraft.jsch.DHECN.Q_C:[B
        19: .line 84
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.Q_C:[B
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
        end local 6 // java.lang.Class c
        20: .line 85
            goto 25
        21: .line 86
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        22: .line 87
            aload 6 /* e */
            instanceof java.lang.Throwable
            ifeq 24
        23: .line 88
            new com.jcraft.jsch.JSchException
            dup
            aload 6 /* e */
            invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokespecial com.jcraft.jsch.JSchException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        24: .line 89
      StackMap locals: java.lang.Exception
      StackMap stack:
            new com.jcraft.jsch.JSchException
            dup
            aload 6 /* e */
            invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
            invokespecial com.jcraft.jsch.JSchException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.Exception e
        25: .line 92
      StackMap locals:
      StackMap stack:
            aload 2 /* V_S */
            ifnonnull 27
        26: .line 93
            return
        27: .line 96
      StackMap locals:
      StackMap stack:
            aload 1 /* session */
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.packet:Lcom/jcraft/jsch/Packet;
            invokevirtual com.jcraft.jsch.Session.write:(Lcom/jcraft/jsch/Packet;)V
        28: .line 98
            invokestatic com.jcraft.jsch.JSch.getLogger:()Lcom/jcraft/jsch/Logger;
            iconst_1
            invokeinterface com.jcraft.jsch.Logger.isEnabled:(I)Z
            ifeq 35
        29: .line 99
            invokestatic com.jcraft.jsch.JSch.getLogger:()Lcom/jcraft/jsch/Logger;
            iconst_1
        30: .line 100
            ldc "SSH_MSG_KEX_ECDH_INIT sent"
        31: .line 99
            invokeinterface com.jcraft.jsch.Logger.log:(ILjava/lang/String;)V
        32: .line 101
            invokestatic com.jcraft.jsch.JSch.getLogger:()Lcom/jcraft/jsch/Logger;
            iconst_1
        33: .line 102
            ldc "expecting SSH_MSG_KEX_ECDH_REPLY"
        34: .line 101
            invokeinterface com.jcraft.jsch.Logger.log:(ILjava/lang/String;)V
        35: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 31
            putfield com.jcraft.jsch.DHECN.state:I
        36: .line 106
            return
        end local 5 // byte[] I_C
        end local 4 // byte[] I_S
        end local 3 // byte[] V_C
        end local 2 // byte[] V_S
        end local 1 // com.jcraft.jsch.Session session
        end local 0 // com.jcraft.jsch.DHECN this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   37     0     this  Lcom/jcraft/jsch/DHECN;
            0   37     1  session  Lcom/jcraft/jsch/Session;
            0   37     2      V_S  [B
            0   37     3      V_C  [B
            0   37     4      I_S  [B
            0   37     5      I_C  [B
            6    8     6        c  Ljava/lang/Class;
           10   11     6        e  Ljava/lang/Exception;
           16   20     6        c  Ljava/lang/Class;
           22   25     6        e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           5     8       9  Class java.lang.Exception
          15    20      21  Class java.lang.Exception
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      session  
      V_S      
      V_C      
      I_S      
      I_C      

  public boolean next(com.jcraft.jsch.Buffer);
    descriptor: (Lcom/jcraft/jsch/Buffer;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // com.jcraft.jsch.DHECN this
        start local 1 // com.jcraft.jsch.Buffer _buf
         0: .line 110
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.state:I
            tableswitch { // 31 - 31
                   31: 1
              default: 37
          }
         1: .line 117
      StackMap locals:
      StackMap stack:
            aload 1 /* _buf */
            invokevirtual com.jcraft.jsch.Buffer.getInt:()I
            istore 3 /* j */
        start local 3 // int j
         2: .line 118
            aload 1 /* _buf */
            invokevirtual com.jcraft.jsch.Buffer.getByte:()I
            istore 3 /* j */
         3: .line 119
            aload 1 /* _buf */
            invokevirtual com.jcraft.jsch.Buffer.getByte:()I
            istore 3 /* j */
         4: .line 120
            iload 3 /* j */
            bipush 31
            if_icmpeq 7
         5: .line 121
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "type: must be 31 "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* j */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 122
            iconst_0
            ireturn
         7: .line 125
      StackMap locals: com.jcraft.jsch.DHECN com.jcraft.jsch.Buffer top int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* _buf */
            invokevirtual com.jcraft.jsch.Buffer.getString:()[B
            putfield com.jcraft.jsch.DHECN.K_S:[B
         8: .line 127
            aload 1 /* _buf */
            invokevirtual com.jcraft.jsch.Buffer.getString:()[B
            astore 4 /* Q_S */
        start local 4 // byte[] Q_S
         9: .line 129
            aload 4 /* Q_S */
            invokestatic com.jcraft.jsch.KeyPairECDSA.fromPoint:([B)[[B
            astore 5 /* r_s */
        start local 5 // byte[][] r_s
        10: .line 137
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.ecdh:Lcom/jcraft/jsch/ECDH;
            aload 5 /* r_s */
            iconst_0
            aaload
            aload 5 /* r_s */
            iconst_1
            aaload
            invokeinterface com.jcraft.jsch.ECDH.validate:([B[B)Z
            ifne 12
        11: .line 138
            iconst_0
            ireturn
        12: .line 141
      StackMap locals: byte[] byte[][]
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.ecdh:Lcom/jcraft/jsch/ECDH;
            aload 5 /* r_s */
            iconst_0
            aaload
            aload 5 /* r_s */
            iconst_1
            aaload
            invokeinterface com.jcraft.jsch.ECDH.getSecret:([B[B)[B
            putfield com.jcraft.jsch.DHECN.K:[B
        13: .line 142
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K:[B
            invokevirtual com.jcraft.jsch.DHECN.normalize:([B)[B
            putfield com.jcraft.jsch.DHECN.K:[B
        14: .line 144
            aload 1 /* _buf */
            invokevirtual com.jcraft.jsch.Buffer.getString:()[B
            astore 6 /* sig_of_H */
        start local 6 // byte[] sig_of_H
        15: .line 159
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            invokevirtual com.jcraft.jsch.Buffer.reset:()V
        16: .line 160
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.V_C:[B
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.V_S:[B
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
        17: .line 161
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.I_C:[B
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.I_S:[B
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
        18: .line 162
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K_S:[B
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
        19: .line 163
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.Q_C:[B
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 4 /* Q_S */
            invokevirtual com.jcraft.jsch.Buffer.putString:([B)V
        20: .line 164
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K:[B
            invokevirtual com.jcraft.jsch.Buffer.putMPInt:([B)V
        21: .line 165
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            invokevirtual com.jcraft.jsch.Buffer.getLength:()I
            newarray 8
            astore 7 /* foo */
        start local 7 // byte[] foo
        22: .line 166
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.buf:Lcom/jcraft/jsch/Buffer;
            aload 7 /* foo */
            invokevirtual com.jcraft.jsch.Buffer.getByte:([B)V
        23: .line 168
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.sha:Lcom/jcraft/jsch/HASH;
            aload 7 /* foo */
            iconst_0
            aload 7 /* foo */
            arraylength
            invokeinterface com.jcraft.jsch.HASH.update:([BII)V
        24: .line 169
            aload 0 /* this */
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.sha:Lcom/jcraft/jsch/HASH;
            invokeinterface com.jcraft.jsch.HASH.digest:()[B
            putfield com.jcraft.jsch.DHECN.H:[B
        25: .line 171
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        26: .line 172
            iconst_0
            istore 3 /* j */
        27: .line 173
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K_S:[B
            iload 2 /* i */
            iinc 2 /* i */ 1
            baload
            bipush 24
            ishl
            ldc -16777216
            iand
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K_S:[B
            iload 2 /* i */
            iinc 2 /* i */ 1
            baload
            bipush 16
            ishl
            ldc 16711680
            iand
            ior
        28: .line 174
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K_S:[B
            iload 2 /* i */
            iinc 2 /* i */ 1
            baload
            bipush 8
            ishl
            ldc 65280
            iand
        29: .line 173
            ior
        30: .line 174
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K_S:[B
            iload 2 /* i */
            iinc 2 /* i */ 1
            baload
            sipush 255
            iand
        31: .line 173
            ior
            istore 3 /* j */
        32: .line 175
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K_S:[B
            iload 2 /* i */
            iload 3 /* j */
            invokestatic com.jcraft.jsch.Util.byte2str:([BII)Ljava/lang/String;
            astore 8 /* alg */
        start local 8 // java.lang.String alg
        33: .line 176
            iload 2 /* i */
            iload 3 /* j */
            iadd
            istore 2 /* i */
        34: .line 178
            aload 0 /* this */
            aload 8 /* alg */
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.K_S:[B
            iload 2 /* i */
            aload 6 /* sig_of_H */
            invokevirtual com.jcraft.jsch.DHECN.verify:(Ljava/lang/String;[BI[B)Z
            istore 9 /* result */
        start local 9 // boolean result
        35: .line 180
            aload 0 /* this */
            iconst_0
            putfield com.jcraft.jsch.DHECN.state:I
        36: .line 181
            iload 9 /* result */
            ireturn
        end local 9 // boolean result
        end local 8 // java.lang.String alg
        end local 7 // byte[] foo
        end local 6 // byte[] sig_of_H
        end local 5 // byte[][] r_s
        end local 4 // byte[] Q_S
        end local 3 // int j
        end local 2 // int i
        37: .line 183
      StackMap locals: com.jcraft.jsch.DHECN com.jcraft.jsch.Buffer
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // com.jcraft.jsch.Buffer _buf
        end local 0 // com.jcraft.jsch.DHECN this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   38     0      this  Lcom/jcraft/jsch/DHECN;
            0   38     1      _buf  Lcom/jcraft/jsch/Buffer;
           26   37     2         i  I
            2   37     3         j  I
            9   37     4       Q_S  [B
           10   37     5       r_s  [[B
           15   37     6  sig_of_H  [B
           22   37     7       foo  [B
           33   37     8       alg  Ljava/lang/String;
           35   37     9    result  Z
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      _buf  

  public int getState();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.jcraft.jsch.DHECN this
         0: .line 186
            aload 0 /* this */
            getfield com.jcraft.jsch.DHECN.state:I
            ireturn
        end local 0 // com.jcraft.jsch.DHECN this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/jcraft/jsch/DHECN;
}
SourceFile: "DHECN.java"