final class sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer implements sun.security.ssl.SSLProducer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer this
         0: .line 192
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 194
            return
        end local 0 // sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/NewSessionTicket$NewSessionTicketKickstartProducer;

  public byte[] produce(sun.security.ssl.ConnectionContext);
    descriptor: (Lsun/security/ssl/ConnectionContext;)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=13, args_size=2
        start local 0 // sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer this
        start local 1 // sun.security.ssl.ConnectionContext context
         0: .line 199
            aload 1 /* context */
            checkcast sun.security.ssl.ServerHandshakeContext
            astore 2 /* shc */
        start local 2 // sun.security.ssl.ServerHandshakeContext shc
         1: .line 202
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.isRejoinable:()Z
            ifne 3
         2: .line 203
            aconst_null
            areturn
         3: .line 212
      StackMap locals: sun.security.ssl.ServerHandshakeContext
      StackMap stack:
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeExtensions:Ljava/util/Map;
         4: .line 213
            getstatic sun.security.ssl.SSLExtension.PSK_KEY_EXCHANGE_MODES:Lsun/security/ssl/SSLExtension;
         5: .line 212
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec
         6: .line 211
            astore 3 /* pkemSpec */
        start local 3 // sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec pkemSpec
         7: .line 214
            aload 3 /* pkemSpec */
            ifnull 11
            aload 3 /* pkemSpec */
         8: .line 215
            getstatic sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeMode.PSK_DHE_KE:Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeMode;
         9: .line 214
            invokevirtual sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec.contains:(Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeMode;)Z
        10: .line 215
            ifne 12
        11: .line 217
      StackMap locals: sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec
      StackMap stack:
            aconst_null
            areturn
        12: .line 222
      StackMap locals:
      StackMap stack:
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.engineGetServerSessionContext:()Ljavax/net/ssl/SSLSessionContext;
        13: .line 221
            checkcast sun.security.ssl.SSLSessionContextImpl
            astore 4 /* sessionCache */
        start local 4 // sun.security.ssl.SSLSessionContextImpl sessionCache
        14: .line 223
            new sun.security.ssl.SessionId
            dup
            iconst_1
        15: .line 224
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        16: .line 223
            invokespecial sun.security.ssl.SessionId.<init>:(ZLjava/security/SecureRandom;)V
            astore 5 /* newId */
        start local 5 // sun.security.ssl.SessionId newId
        17: .line 227
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.getResumptionMasterSecret:()Ljavax/crypto/SecretKey;
        18: .line 226
            astore 6 /* resumptionMasterSecret */
        start local 6 // javax.crypto.SecretKey resumptionMasterSecret
        19: .line 228
            aload 6 /* resumptionMasterSecret */
            ifnonnull 24
        20: .line 229
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 23
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 23
        21: .line 231
            ldc "Session has no resumption secret. No ticket sent."
            iconst_0
            anewarray java.lang.Object
        22: .line 230
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        23: .line 233
      StackMap locals: sun.security.ssl.SSLSessionContextImpl sun.security.ssl.SessionId javax.crypto.SecretKey
      StackMap stack:
            aconst_null
            areturn
        24: .line 237
      StackMap locals:
      StackMap stack:
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.incrTicketNonceCounter:()Ljava/math/BigInteger;
            astore 7 /* nonce */
        start local 7 // java.math.BigInteger nonce
        25: .line 238
            aload 7 /* nonce */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 8 /* nonceArr */
        start local 8 // byte[] nonceArr
        26: .line 240
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
        27: .line 241
            aload 6 /* resumptionMasterSecret */
            aload 8 /* nonceArr */
        28: .line 239
            invokestatic sun.security.ssl.NewSessionTicket.derivePreSharedKey:(Lsun/security/ssl/CipherSuite$HashAlg;Ljavax/crypto/SecretKey;[B)Ljavax/crypto/SecretKey;
            astore 9 /* psk */
        start local 9 // javax.crypto.SecretKey psk
        29: .line 243
            aload 4 /* sessionCache */
            invokevirtual sun.security.ssl.SSLSessionContextImpl.getSessionTimeout:()I
            istore 10 /* sessionTimeoutSeconds */
        start local 10 // int sessionTimeoutSeconds
        30: .line 244
            iload 10 /* sessionTimeoutSeconds */
            ldc 604800
            if_icmple 35
        31: .line 245
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 34
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 34
        32: .line 247
            ldc "Session timeout is too long. No ticket sent."
            iconst_0
            anewarray java.lang.Object
        33: .line 246
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        34: .line 249
      StackMap locals: sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer sun.security.ssl.ConnectionContext sun.security.ssl.ServerHandshakeContext sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec sun.security.ssl.SSLSessionContextImpl sun.security.ssl.SessionId javax.crypto.SecretKey java.math.BigInteger byte[] javax.crypto.SecretKey int
      StackMap stack:
            aconst_null
            areturn
        35: .line 251
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.NewSessionTicket$NewSessionTicketMessage
            dup
            aload 2 /* shc */
        36: .line 252
            iload 10 /* sessionTimeoutSeconds */
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        37: .line 253
            aload 8 /* nonceArr */
            aload 5 /* newId */
            invokevirtual sun.security.ssl.SessionId.getId:()[B
        38: .line 251
            invokespecial sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.<init>:(Lsun/security/ssl/HandshakeContext;ILjava/security/SecureRandom;[B[B)V
            astore 11 /* nstm */
        start local 11 // sun.security.ssl.NewSessionTicket$NewSessionTicketMessage nstm
        39: .line 254
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 42
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 42
        40: .line 256
            ldc "Produced NewSessionTicket handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 11 /* nstm */
            aastore
        41: .line 255
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        42: .line 263
      StackMap locals: sun.security.ssl.NewSessionTicket$NewSessionTicketMessage
      StackMap stack:
            new sun.security.ssl.SSLSessionImpl
            dup
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 5 /* newId */
            invokespecial sun.security.ssl.SSLSessionImpl.<init>:(Lsun/security/ssl/SSLSessionImpl;Lsun/security/ssl/SessionId;)V
        43: .line 262
            astore 12 /* sessionCopy */
        start local 12 // sun.security.ssl.SSLSessionImpl sessionCopy
        44: .line 264
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 12 /* sessionCopy */
            invokevirtual sun.security.ssl.SSLSessionImpl.addChild:(Lsun/security/ssl/SSLSessionImpl;)V
        45: .line 265
            aload 12 /* sessionCopy */
            aload 9 /* psk */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPreSharedKey:(Ljavax/crypto/SecretKey;)V
        46: .line 266
            aload 12 /* sessionCopy */
            aload 5 /* newId */
            invokevirtual sun.security.ssl.SessionId.getId:()[B
            invokevirtual sun.security.ssl.SSLSessionImpl.setPskIdentity:([B)V
        47: .line 267
            aload 12 /* sessionCopy */
            aload 11 /* nstm */
            getfield sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.ticketAgeAdd:I
            invokevirtual sun.security.ssl.SSLSessionImpl.setTicketAgeAdd:(I)V
        48: .line 268
            aload 4 /* sessionCache */
            aload 12 /* sessionCopy */
            invokevirtual sun.security.ssl.SSLSessionContextImpl.put:(Lsun/security/ssl/SSLSessionImpl;)V
        49: .line 271
            aload 11 /* nstm */
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
        50: .line 272
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
        51: .line 275
            aconst_null
            areturn
        end local 12 // sun.security.ssl.SSLSessionImpl sessionCopy
        end local 11 // sun.security.ssl.NewSessionTicket$NewSessionTicketMessage nstm
        end local 10 // int sessionTimeoutSeconds
        end local 9 // javax.crypto.SecretKey psk
        end local 8 // byte[] nonceArr
        end local 7 // java.math.BigInteger nonce
        end local 6 // javax.crypto.SecretKey resumptionMasterSecret
        end local 5 // sun.security.ssl.SessionId newId
        end local 4 // sun.security.ssl.SSLSessionContextImpl sessionCache
        end local 3 // sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec pkemSpec
        end local 2 // sun.security.ssl.ServerHandshakeContext shc
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   52     0                    this  Lsun/security/ssl/NewSessionTicket$NewSessionTicketKickstartProducer;
            0   52     1                 context  Lsun/security/ssl/ConnectionContext;
            1   52     2                     shc  Lsun/security/ssl/ServerHandshakeContext;
            7   52     3                pkemSpec  Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeModesSpec;
           14   52     4            sessionCache  Lsun/security/ssl/SSLSessionContextImpl;
           17   52     5                   newId  Lsun/security/ssl/SessionId;
           19   52     6  resumptionMasterSecret  Ljavax/crypto/SecretKey;
           25   52     7                   nonce  Ljava/math/BigInteger;
           26   52     8                nonceArr  [B
           29   52     9                     psk  Ljavax/crypto/SecretKey;
           30   52    10   sessionTimeoutSeconds  I
           39   52    11                    nstm  Lsun/security/ssl/NewSessionTicket$NewSessionTicketMessage;
           44   52    12             sessionCopy  Lsun/security/ssl/SSLSessionImpl;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
}
SourceFile: "NewSessionTicket.java"
NestHost: sun.security.ssl.NewSessionTicket
InnerClasses:
  final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
  private final NewSessionTicketKickstartProducer = sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer of sun.security.ssl.NewSessionTicket
  final NewSessionTicketMessage = sun.security.ssl.NewSessionTicket$NewSessionTicketMessage of sun.security.ssl.NewSessionTicket
  final PskKeyExchangeMode = sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeMode of sun.security.ssl.PskKeyExchangeModesExtension
  final PskKeyExchangeModesSpec = sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec of sun.security.ssl.PskKeyExchangeModesExtension