abstract class sun.security.ssl.HandshakeMessage
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: sun.security.ssl.HandshakeMessage
  super_class: java.lang.Object
{
  static final byte ht_hello_request;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  static final byte ht_client_hello;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final byte ht_server_hello;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final byte ht_certificate;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 11

  static final byte ht_server_key_exchange;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 12

  static final byte ht_certificate_request;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 13

  static final byte ht_server_hello_done;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 14

  static final byte ht_certificate_verify;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 15

  static final byte ht_client_key_exchange;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 16

  static final byte ht_finished;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 20

  static final sun.security.ssl.Debug debug;
    descriptor: Lsun/security/ssl/Debug;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] MD5_pad1;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] MD5_pad2;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] SHA_pad1;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] SHA_pad2;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 97
            ldc "ssl"
            invokestatic sun.security.ssl.Debug.getInstance:(Ljava/lang/String;)Lsun/security/ssl/Debug;
            putstatic sun.security.ssl.HandshakeMessage.debug:Lsun/security/ssl/Debug;
         1: .line 120
            bipush 54
            bipush 48
            invokestatic sun.security.ssl.HandshakeMessage.genPad:(II)[B
            putstatic sun.security.ssl.HandshakeMessage.MD5_pad1:[B
         2: .line 121
            bipush 92
            bipush 48
            invokestatic sun.security.ssl.HandshakeMessage.genPad:(II)[B
            putstatic sun.security.ssl.HandshakeMessage.MD5_pad2:[B
         3: .line 123
            bipush 54
            bipush 40
            invokestatic sun.security.ssl.HandshakeMessage.genPad:(II)[B
            putstatic sun.security.ssl.HandshakeMessage.SHA_pad1:[B
         4: .line 124
            bipush 92
            bipush 40
            invokestatic sun.security.ssl.HandshakeMessage.genPad:(II)[B
            putstatic sun.security.ssl.HandshakeMessage.SHA_pad2:[B
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage this
         0: .line 80
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.ssl.HandshakeMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage;

  static byte[] toByteArray(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // java.math.BigInteger bi
         0: .line 106
            aload 0 /* bi */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 1 /* b */
        start local 1 // byte[] b
         1: .line 107
            aload 1 /* b */
            arraylength
            iconst_1
            if_icmple 6
            aload 1 /* b */
            iconst_0
            baload
            ifne 6
         2: .line 108
            aload 1 /* b */
            arraylength
            iconst_1
            isub
            istore 2 /* n */
        start local 2 // int n
         3: .line 109
            iload 2 /* n */
            newarray 8
            astore 3 /* newarray */
        start local 3 // byte[] newarray
         4: .line 110
            aload 1 /* b */
            iconst_1
            aload 3 /* newarray */
            iconst_0
            iload 2 /* n */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 111
            aload 3 /* newarray */
            astore 1 /* b */
        end local 3 // byte[] newarray
        end local 2 // int n
         6: .line 113
      StackMap locals: byte[]
      StackMap stack:
            aload 1 /* b */
            areturn
        end local 1 // byte[] b
        end local 0 // java.math.BigInteger bi
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0        bi  Ljava/math/BigInteger;
            1    7     1         b  [B
            3    6     2         n  I
            4    6     3  newarray  [B
    MethodParameters:
      Name  Flags
      bi    

  private static byte[] genPad(int, int);
    descriptor: (II)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // int b
        start local 1 // int count
         0: .line 127
            iload 1 /* count */
            newarray 8
            astore 2 /* padding */
        start local 2 // byte[] padding
         1: .line 128
            aload 2 /* padding */
            iload 0 /* b */
            i2b
            invokestatic java.util.Arrays.fill:([BB)V
         2: .line 129
            aload 2 /* padding */
            areturn
        end local 2 // byte[] padding
        end local 1 // int count
        end local 0 // int b
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0        b  I
            0    3     1    count  I
            1    3     2  padding  [B
    MethodParameters:
       Name  Flags
      b      
      count  

  final void write(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage this
        start local 1 // sun.security.ssl.HandshakeOutStream s
         0: .line 140
            aload 0 /* this */
            invokevirtual sun.security.ssl.HandshakeMessage.messageLength:()I
            istore 2 /* len */
        start local 2 // int len
         1: .line 141
            iload 2 /* len */
            ldc 16777216
            if_icmple 5
         2: .line 142
            new javax.net.ssl.SSLException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Handshake message too big, type = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 143
            aload 0 /* this */
            invokevirtual sun.security.ssl.HandshakeMessage.messageType:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ", len = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 2 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 142
            invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 145
      StackMap locals: int
      StackMap stack:
            aload 1 /* s */
            aload 0 /* this */
            invokevirtual sun.security.ssl.HandshakeMessage.messageType:()I
            invokevirtual sun.security.ssl.HandshakeOutStream.write:(I)V
         6: .line 146
            aload 1 /* s */
            iload 2 /* len */
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt24:(I)V
         7: .line 147
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeMessage.send:(Lsun/security/ssl/HandshakeOutStream;)V
         8: .line 148
            return
        end local 2 // int len
        end local 1 // sun.security.ssl.HandshakeOutStream s
        end local 0 // sun.security.ssl.HandshakeMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/security/ssl/HandshakeMessage;
            0    9     1     s  Lsun/security/ssl/HandshakeOutStream;
            1    9     2   len  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  abstract int messageType();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT

  abstract int messageLength();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT

  abstract void send(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  abstract void print(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      p     
}
SourceFile: "HandshakeMessage.java"
NestMembers:
  sun.security.ssl.HandshakeMessage$CertificateMsg  sun.security.ssl.HandshakeMessage$CertificateRequest  sun.security.ssl.HandshakeMessage$CertificateVerify  sun.security.ssl.HandshakeMessage$CertificateVerify$1  sun.security.ssl.HandshakeMessage$ClientHello  sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange  sun.security.ssl.HandshakeMessage$DistinguishedName  sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange  sun.security.ssl.HandshakeMessage$Finished  sun.security.ssl.HandshakeMessage$HelloRequest  sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange  sun.security.ssl.HandshakeMessage$ServerHello  sun.security.ssl.HandshakeMessage$ServerHelloDone  sun.security.ssl.HandshakeMessage$ServerKeyExchange
InnerClasses:
  final CertificateMsg = sun.security.ssl.HandshakeMessage$CertificateMsg of sun.security.ssl.HandshakeMessage
  final CertificateRequest = sun.security.ssl.HandshakeMessage$CertificateRequest of sun.security.ssl.HandshakeMessage
  final CertificateVerify = sun.security.ssl.HandshakeMessage$CertificateVerify of sun.security.ssl.HandshakeMessage
  final ClientHello = sun.security.ssl.HandshakeMessage$ClientHello of sun.security.ssl.HandshakeMessage
  final DH_ServerKeyExchange = sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange of sun.security.ssl.HandshakeMessage
  final DistinguishedName = sun.security.ssl.HandshakeMessage$DistinguishedName of sun.security.ssl.HandshakeMessage
  final ECDH_ServerKeyExchange = sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange of sun.security.ssl.HandshakeMessage
  final Finished = sun.security.ssl.HandshakeMessage$Finished of sun.security.ssl.HandshakeMessage
  final HelloRequest = sun.security.ssl.HandshakeMessage$HelloRequest of sun.security.ssl.HandshakeMessage
  final RSA_ServerKeyExchange = sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange of sun.security.ssl.HandshakeMessage
  final ServerHello = sun.security.ssl.HandshakeMessage$ServerHello of sun.security.ssl.HandshakeMessage
  final ServerHelloDone = sun.security.ssl.HandshakeMessage$ServerHelloDone of sun.security.ssl.HandshakeMessage
  abstract ServerKeyExchange = sun.security.ssl.HandshakeMessage$ServerKeyExchange of sun.security.ssl.HandshakeMessage