final class sun.security.ssl.ServerHello
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.ServerHello
  super_class: java.lang.Object
{
  static final sun.security.ssl.SSLConsumer handshakeConsumer;
    descriptor: Lsun/security/ssl/SSLConsumer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

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

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

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

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

  private static final sun.security.ssl.HandshakeConsumer t12HandshakeConsumer;
    descriptor: Lsun/security/ssl/HandshakeConsumer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final sun.security.ssl.HandshakeConsumer t13HandshakeConsumer;
    descriptor: Lsun/security/ssl/HandshakeConsumer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final sun.security.ssl.HandshakeConsumer t13HrrHandshakeConsumer;
    descriptor: Lsun/security/ssl/HandshakeConsumer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 63
            new sun.security.ssl.ServerHello$ServerHelloConsumer
            dup
            invokespecial sun.security.ssl.ServerHello$ServerHelloConsumer.<init>:()V
         1: .line 62
            putstatic sun.security.ssl.ServerHello.handshakeConsumer:Lsun/security/ssl/SSLConsumer;
         2: .line 65
            new sun.security.ssl.ServerHello$T12ServerHelloProducer
            dup
            invokespecial sun.security.ssl.ServerHello$T12ServerHelloProducer.<init>:()V
         3: .line 64
            putstatic sun.security.ssl.ServerHello.t12HandshakeProducer:Lsun/security/ssl/HandshakeProducer;
         4: .line 67
            new sun.security.ssl.ServerHello$T13ServerHelloProducer
            dup
            invokespecial sun.security.ssl.ServerHello$T13ServerHelloProducer.<init>:()V
         5: .line 66
            putstatic sun.security.ssl.ServerHello.t13HandshakeProducer:Lsun/security/ssl/HandshakeProducer;
         6: .line 69
            new sun.security.ssl.ServerHello$T13HelloRetryRequestProducer
            dup
            invokespecial sun.security.ssl.ServerHello$T13HelloRetryRequestProducer.<init>:()V
         7: .line 68
            putstatic sun.security.ssl.ServerHello.hrrHandshakeProducer:Lsun/security/ssl/HandshakeProducer;
         8: .line 72
            new sun.security.ssl.ServerHello$T13HelloRetryRequestReproducer
            dup
            invokespecial sun.security.ssl.ServerHello$T13HelloRetryRequestReproducer.<init>:()V
         9: .line 71
            putstatic sun.security.ssl.ServerHello.hrrReproducer:Lsun/security/ssl/HandshakeProducer;
        10: .line 75
            new sun.security.ssl.ServerHello$T12ServerHelloConsumer
            dup
            invokespecial sun.security.ssl.ServerHello$T12ServerHelloConsumer.<init>:()V
        11: .line 74
            putstatic sun.security.ssl.ServerHello.t12HandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
        12: .line 77
            new sun.security.ssl.ServerHello$T13ServerHelloConsumer
            dup
            invokespecial sun.security.ssl.ServerHello$T13ServerHelloConsumer.<init>:()V
        13: .line 76
            putstatic sun.security.ssl.ServerHello.t13HandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
        14: .line 80
            new sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer
            dup
            invokespecial sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer.<init>:()V
        15: .line 79
            putstatic sun.security.ssl.ServerHello.t13HrrHandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
        16: .line 80
            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.ServerHello this
         0: .line 61
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.ssl.ServerHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/ServerHello;

  private static void setUpPskKD(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // sun.security.ssl.HandshakeContext hc
        start local 1 // javax.crypto.SecretKey psk
         0: .line 1185
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 2
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 1186
            ldc "Using PSK to derive early secret"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         2: .line 1190
      StackMap locals:
      StackMap stack:
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 2 /* hashAlg */
        start local 2 // sun.security.ssl.CipherSuite$HashAlg hashAlg
         3: .line 1191
            new sun.security.ssl.HKDF
            dup
            aload 2 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            invokespecial sun.security.ssl.HKDF.<init>:(Ljava/lang/String;)V
            astore 3 /* hkdf */
        start local 3 // sun.security.ssl.HKDF hkdf
         4: .line 1192
            aload 2 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            newarray 8
            astore 4 /* zeros */
        start local 4 // byte[] zeros
         5: .line 1193
            aload 3 /* hkdf */
            aload 4 /* zeros */
            aload 1 /* psk */
            ldc "TlsEarlySecret"
            invokevirtual sun.security.ssl.HKDF.extract:([BLjavax/crypto/SecretKey;Ljava/lang/String;)Ljavax/crypto/SecretKey;
            astore 5 /* earlySecret */
        start local 5 // javax.crypto.SecretKey earlySecret
         6: .line 1194
            aload 0 /* hc */
         7: .line 1195
            new sun.security.ssl.SSLSecretDerivation
            dup
            aload 0 /* hc */
            aload 5 /* earlySecret */
            invokespecial sun.security.ssl.SSLSecretDerivation.<init>:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
         8: .line 1194
            putfield sun.security.ssl.HandshakeContext.handshakeKeyDerivation:Lsun/security/ssl/SSLKeyDerivation;
        end local 5 // javax.crypto.SecretKey earlySecret
        end local 4 // byte[] zeros
        end local 3 // sun.security.ssl.HKDF hkdf
        end local 2 // sun.security.ssl.CipherSuite$HashAlg hashAlg
         9: .line 1196
            goto 16
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
        10: astore 2 /* gse */
        start local 2 // java.security.GeneralSecurityException gse
        11: .line 1197
            new javax.net.ssl.SSLHandshakeException
            dup
        12: .line 1198
            ldc "Could not generate secret"
        13: .line 1197
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
        14: .line 1198
            aload 2 /* gse */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        15: .line 1197
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 2 // java.security.GeneralSecurityException gse
        16: .line 1200
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.crypto.SecretKey psk
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0           hc  Lsun/security/ssl/HandshakeContext;
            0   17     1          psk  Ljavax/crypto/SecretKey;
            3    9     2      hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
            4    9     3         hkdf  Lsun/security/ssl/HKDF;
            5    9     4        zeros  [B
            6    9     5  earlySecret  Ljavax/crypto/SecretKey;
           11   16     2          gse  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2     9      10  Class java.security.GeneralSecurityException
    Exceptions:
      throws javax.net.ssl.SSLHandshakeException
    MethodParameters:
      Name  Flags
      hc    
      psk   
}
SourceFile: "ServerHello.java"
NestMembers:
  sun.security.ssl.ServerHello$ServerHelloConsumer  sun.security.ssl.ServerHello$ServerHelloMessage  sun.security.ssl.ServerHello$T12ServerHelloConsumer  sun.security.ssl.ServerHello$T12ServerHelloConsumer$1  sun.security.ssl.ServerHello$T12ServerHelloProducer  sun.security.ssl.ServerHello$T12ServerHelloProducer$KeyExchangeProperties  sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer  sun.security.ssl.ServerHello$T13HelloRetryRequestProducer  sun.security.ssl.ServerHello$T13HelloRetryRequestReproducer  sun.security.ssl.ServerHello$T13ServerHelloConsumer  sun.security.ssl.ServerHello$T13ServerHelloProducer
InnerClasses:
  final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
  private final ServerHelloConsumer = sun.security.ssl.ServerHello$ServerHelloConsumer of sun.security.ssl.ServerHello
  final ServerHelloMessage = sun.security.ssl.ServerHello$ServerHelloMessage of sun.security.ssl.ServerHello
  private final T12ServerHelloConsumer = sun.security.ssl.ServerHello$T12ServerHelloConsumer of sun.security.ssl.ServerHello
  private final T12ServerHelloProducer = sun.security.ssl.ServerHello$T12ServerHelloProducer of sun.security.ssl.ServerHello
  private final T13HelloRetryRequestConsumer = sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer of sun.security.ssl.ServerHello
  private final T13HelloRetryRequestProducer = sun.security.ssl.ServerHello$T13HelloRetryRequestProducer of sun.security.ssl.ServerHello
  private final T13HelloRetryRequestReproducer = sun.security.ssl.ServerHello$T13HelloRetryRequestReproducer of sun.security.ssl.ServerHello
  private final T13ServerHelloConsumer = sun.security.ssl.ServerHello$T13ServerHelloConsumer of sun.security.ssl.ServerHello
  private final T13ServerHelloProducer = sun.security.ssl.ServerHello$T13ServerHelloProducer of sun.security.ssl.ServerHello