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 312
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 314
            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=9, locals=12, args_size=2
        start local 0 // sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer this
        start local 1 // sun.security.ssl.ConnectionContext context
         0: .line 318
            aload 1 /* context */
            checkcast sun.security.ssl.HandshakeContext
            astore 2 /* hc */
        start local 2 // sun.security.ssl.HandshakeContext hc
         1: .line 321
            aload 2 /* hc */
            instanceof sun.security.ssl.ServerHandshakeContext
            ifeq 13
         2: .line 323
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.isRejoinable:()Z
            ifne 4
         3: .line 324
            aconst_null
            areturn
         4: .line 333
      StackMap locals: sun.security.ssl.HandshakeContext
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeExtensions:Ljava/util/Map;
         5: .line 334
            getstatic sun.security.ssl.SSLExtension.PSK_KEY_EXCHANGE_MODES:Lsun/security/ssl/SSLExtension;
         6: .line 333
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec
         7: .line 332
            astore 3 /* pkemSpec */
        start local 3 // sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec pkemSpec
         8: .line 335
            aload 3 /* pkemSpec */
            ifnull 12
            aload 3 /* pkemSpec */
         9: .line 336
            getstatic sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeMode.PSK_DHE_KE:Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeMode;
        10: .line 335
            invokevirtual sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec.contains:(Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeMode;)Z
        11: .line 336
            ifne 15
        12: .line 338
      StackMap locals: sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec
      StackMap stack:
            aconst_null
            areturn
        end local 3 // sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec pkemSpec
        13: .line 344
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.isPSKable:()Z
            ifne 15
        14: .line 345
            aconst_null
            areturn
        15: .line 351
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.engineGetServerSessionContext:()Ljavax/net/ssl/SSLSessionContext;
        16: .line 350
            checkcast sun.security.ssl.SSLSessionContextImpl
            astore 3 /* sessionCache */
        start local 3 // sun.security.ssl.SSLSessionContextImpl sessionCache
        17: .line 352
            new sun.security.ssl.SessionId
            dup
            iconst_1
        18: .line 353
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        19: .line 352
            invokespecial sun.security.ssl.SessionId.<init>:(ZLjava/security/SecureRandom;)V
            astore 4 /* newId */
        start local 4 // sun.security.ssl.SessionId newId
        20: .line 356
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.getResumptionMasterSecret:()Ljavax/crypto/SecretKey;
        21: .line 355
            astore 5 /* resumptionMasterSecret */
        start local 5 // javax.crypto.SecretKey resumptionMasterSecret
        22: .line 357
            aload 5 /* resumptionMasterSecret */
            ifnonnull 27
        23: .line 358
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 26
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 26
        24: .line 360
            ldc "Session has no resumption secret. No ticket sent."
            iconst_0
            anewarray java.lang.Object
        25: .line 359
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        26: .line 362
      StackMap locals: sun.security.ssl.SSLSessionContextImpl sun.security.ssl.SessionId javax.crypto.SecretKey
      StackMap stack:
            aconst_null
            areturn
        27: .line 366
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.incrTicketNonceCounter:()Ljava/math/BigInteger;
            astore 6 /* nonce */
        start local 6 // java.math.BigInteger nonce
        28: .line 367
            aload 6 /* nonce */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 7 /* nonceArr */
        start local 7 // byte[] nonceArr
        29: .line 369
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
        30: .line 370
            aload 5 /* resumptionMasterSecret */
            aload 7 /* nonceArr */
        31: .line 368
            invokestatic sun.security.ssl.NewSessionTicket.derivePreSharedKey:(Lsun/security/ssl/CipherSuite$HashAlg;Ljavax/crypto/SecretKey;[B)Ljavax/crypto/SecretKey;
            astore 8 /* psk */
        start local 8 // javax.crypto.SecretKey psk
        32: .line 372
            aload 3 /* sessionCache */
            invokevirtual sun.security.ssl.SSLSessionContextImpl.getSessionTimeout:()I
            istore 9 /* sessionTimeoutSeconds */
        start local 9 // int sessionTimeoutSeconds
        33: .line 373
            iload 9 /* sessionTimeoutSeconds */
            ldc 604800
            if_icmple 38
        34: .line 374
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 37
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 37
        35: .line 376
            ldc "Session timeout is too long. No ticket sent."
            iconst_0
            anewarray java.lang.Object
        36: .line 375
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        37: .line 378
      StackMap locals: sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer sun.security.ssl.ConnectionContext sun.security.ssl.HandshakeContext sun.security.ssl.SSLSessionContextImpl sun.security.ssl.SessionId javax.crypto.SecretKey java.math.BigInteger byte[] javax.crypto.SecretKey int
      StackMap stack:
            aconst_null
            areturn
        38: .line 381
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 10 /* nstm */
        start local 10 // sun.security.ssl.NewSessionTicket$NewSessionTicketMessage nstm
        39: .line 384
            new sun.security.ssl.SSLSessionImpl
            dup
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 4 /* newId */
            invokespecial sun.security.ssl.SSLSessionImpl.<init>:(Lsun/security/ssl/SSLSessionImpl;Lsun/security/ssl/SessionId;)V
        40: .line 383
            astore 11 /* sessionCopy */
        start local 11 // sun.security.ssl.SSLSessionImpl sessionCopy
        41: .line 385
            aload 11 /* sessionCopy */
            aload 8 /* psk */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPreSharedKey:(Ljavax/crypto/SecretKey;)V
        42: .line 386
            aload 11 /* sessionCopy */
            aload 4 /* newId */
            invokevirtual sun.security.ssl.SessionId.getId:()[B
            invokevirtual sun.security.ssl.SSLSessionImpl.setPskIdentity:([B)V
        43: .line 389
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 2 /* hc */
            invokevirtual sun.security.ssl.SSLSessionImpl.isStatelessable:(Lsun/security/ssl/HandshakeContext;)Z
            ifeq 57
        44: .line 390
            new sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage
            dup
            aload 2 /* hc */
        45: .line 391
            iload 9 /* sessionTimeoutSeconds */
        46: .line 392
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        47: .line 393
            aload 7 /* nonceArr */
        48: .line 394
            new sun.security.ssl.SessionTicketExtension$SessionTicketSpec
            dup
            invokespecial sun.security.ssl.SessionTicketExtension$SessionTicketSpec.<init>:()V
            aload 2 /* hc */
            aload 11 /* sessionCopy */
            invokevirtual sun.security.ssl.SessionTicketExtension$SessionTicketSpec.encrypt:(Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/SSLSessionImpl;)[B
        49: .line 390
            invokespecial sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage.<init>:(Lsun/security/ssl/HandshakeContext;ILjava/security/SecureRandom;[B[B)V
            astore 10 /* nstm */
        50: .line 396
            aload 10 /* nstm */
            invokevirtual sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.isValid:()Z
            ifne 53
        51: .line 397
            aload 2 /* hc */
            iconst_0
            putfield sun.security.ssl.HandshakeContext.statelessResumption:Z
        52: .line 398
            goto 57
        53: .line 399
      StackMap locals: sun.security.ssl.NewSessionTicket$NewSessionTicketMessage sun.security.ssl.SSLSessionImpl
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 57
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 57
        54: .line 401
            ldc "Produced NewSessionTicket stateless handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        55: .line 402
            aload 10 /* nstm */
            aastore
        56: .line 400
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        57: .line 407
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 2 /* hc */
            invokevirtual sun.security.ssl.SSLSessionImpl.isStatelessable:(Lsun/security/ssl/HandshakeContext;)Z
            ifne 69
        58: .line 408
            new sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage
            dup
            aload 2 /* hc */
            iload 9 /* sessionTimeoutSeconds */
        59: .line 409
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
            aload 7 /* nonceArr */
        60: .line 410
            aload 4 /* newId */
            invokevirtual sun.security.ssl.SessionId.getId:()[B
        61: .line 408
            invokespecial sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage.<init>:(Lsun/security/ssl/HandshakeContext;ILjava/security/SecureRandom;[B[B)V
            astore 10 /* nstm */
        62: .line 411
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 66
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 66
        63: .line 413
            ldc "Produced NewSessionTicket handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        64: .line 414
            aload 10 /* nstm */
            aastore
        65: .line 412
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        66: .line 420
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 11 /* sessionCopy */
            invokevirtual sun.security.ssl.SSLSessionImpl.addChild:(Lsun/security/ssl/SSLSessionImpl;)V
        67: .line 421
            aload 11 /* sessionCopy */
            aload 10 /* nstm */
            invokevirtual sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.getTicketAgeAdd:()I
            invokevirtual sun.security.ssl.SSLSessionImpl.setTicketAgeAdd:(I)V
        68: .line 422
            aload 3 /* sessionCache */
            aload 11 /* sessionCopy */
            invokevirtual sun.security.ssl.SSLSessionContextImpl.put:(Lsun/security/ssl/SSLSessionImpl;)V
        69: .line 426
      StackMap locals:
      StackMap stack:
            aload 10 /* nstm */
            ifnull 72
        70: .line 428
            aload 10 /* nstm */
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
        71: .line 429
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
        72: .line 432
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            instanceof sun.security.ssl.PostHandshakeContext
            ifeq 74
        73: .line 433
            aload 2 /* hc */
            checkcast sun.security.ssl.PostHandshakeContext
            invokevirtual sun.security.ssl.PostHandshakeContext.finish:()V
        74: .line 437
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 11 // sun.security.ssl.SSLSessionImpl sessionCopy
        end local 10 // sun.security.ssl.NewSessionTicket$NewSessionTicketMessage nstm
        end local 9 // int sessionTimeoutSeconds
        end local 8 // javax.crypto.SecretKey psk
        end local 7 // byte[] nonceArr
        end local 6 // java.math.BigInteger nonce
        end local 5 // javax.crypto.SecretKey resumptionMasterSecret
        end local 4 // sun.security.ssl.SessionId newId
        end local 3 // sun.security.ssl.SSLSessionContextImpl sessionCache
        end local 2 // sun.security.ssl.HandshakeContext hc
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.NewSessionTicket$NewSessionTicketKickstartProducer this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   75     0                    this  Lsun/security/ssl/NewSessionTicket$NewSessionTicketKickstartProducer;
            0   75     1                 context  Lsun/security/ssl/ConnectionContext;
            1   75     2                      hc  Lsun/security/ssl/HandshakeContext;
            8   13     3                pkemSpec  Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeModesSpec;
           17   75     3            sessionCache  Lsun/security/ssl/SSLSessionContextImpl;
           20   75     4                   newId  Lsun/security/ssl/SessionId;
           22   75     5  resumptionMasterSecret  Ljavax/crypto/SecretKey;
           28   75     6                   nonce  Ljava/math/BigInteger;
           29   75     7                nonceArr  [B
           32   75     8                     psk  Ljavax/crypto/SecretKey;
           33   75     9   sessionTimeoutSeconds  I
           39   75    10                    nstm  Lsun/security/ssl/NewSessionTicket$NewSessionTicketMessage;
           41   75    11             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
  abstract NewSessionTicketMessage = sun.security.ssl.NewSessionTicket$NewSessionTicketMessage of sun.security.ssl.NewSessionTicket
  final T13NewSessionTicketMessage = sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage 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
  final SessionTicketSpec = sun.security.ssl.SessionTicketExtension$SessionTicketSpec of sun.security.ssl.SessionTicketExtension