final class sun.security.ssl.NewSessionTicket$T13NewSessionTicketProducer implements sun.security.ssl.SSLProducer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.NewSessionTicket$T13NewSessionTicketProducer
  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$T13NewSessionTicketProducer this
         0: .line 313
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 315
            return
        end local 0 // sun.security.ssl.NewSessionTicket$T13NewSessionTicketProducer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/NewSessionTicket$T13NewSessionTicketProducer;

  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$T13NewSessionTicketProducer this
        start local 1 // sun.security.ssl.ConnectionContext context
         0: .line 319
            aload 1 /* context */
            checkcast sun.security.ssl.HandshakeContext
            astore 2 /* hc */
        start local 2 // sun.security.ssl.HandshakeContext hc
         1: .line 325
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.hasDelegatedFinished:Z
            ifeq 4
         2: .line 327
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            iconst_0
            putfield sun.security.ssl.TransportContext.hasDelegatedFinished:Z
         3: .line 328
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            iconst_1
            putfield sun.security.ssl.TransportContext.needHandshakeFinishedStatus:Z
         4: .line 332
      StackMap locals: sun.security.ssl.HandshakeContext
      StackMap stack:
            aload 2 /* hc */
            instanceof sun.security.ssl.ServerHandshakeContext
            ifeq 20
         5: .line 334
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.isRejoinable:()Z
            ifne 10
         6: .line 335
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 9
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 9
         7: .line 337
            ldc "No session ticket produced: session is not resumable"
            iconst_0
            anewarray java.lang.Object
         8: .line 336
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         9: .line 341
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        10: .line 350
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeExtensions:Ljava/util/Map;
        11: .line 351
            getstatic sun.security.ssl.SSLExtension.PSK_KEY_EXCHANGE_MODES:Lsun/security/ssl/SSLExtension;
        12: .line 350
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec
        13: .line 349
            astore 3 /* pkemSpec */
        start local 3 // sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec pkemSpec
        14: .line 352
            aload 3 /* pkemSpec */
            ifnull 16
        15: .line 353
            aload 3 /* pkemSpec */
            getstatic sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeMode.PSK_DHE_KE:Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeMode;
            invokevirtual sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec.contains:(Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeMode;)Z
            ifne 25
        16: .line 354
      StackMap locals: sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 19
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 19
        17: .line 356
            ldc "No session ticket produced: client does not support psk_dhe_ke"
            iconst_0
            anewarray java.lang.Object
        18: .line 355
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        19: .line 360
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // sun.security.ssl.PskKeyExchangeModesExtension$PskKeyExchangeModesSpec pkemSpec
        20: .line 365
      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 25
        21: .line 366
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 24
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 24
        22: .line 368
            ldc "No session ticket produced: No session ticket allowed in this session"
            iconst_0
            anewarray java.lang.Object
        23: .line 367
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        24: .line 372
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        25: .line 378
      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;
        26: .line 377
            checkcast sun.security.ssl.SSLSessionContextImpl
            astore 3 /* sessionCache */
        start local 3 // sun.security.ssl.SSLSessionContextImpl sessionCache
        27: .line 379
            new sun.security.ssl.SessionId
            dup
            iconst_1
        28: .line 380
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        29: .line 379
            invokespecial sun.security.ssl.SessionId.<init>:(ZLjava/security/SecureRandom;)V
            astore 4 /* newId */
        start local 4 // sun.security.ssl.SessionId newId
        30: .line 383
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.getResumptionMasterSecret:()Ljavax/crypto/SecretKey;
        31: .line 382
            astore 5 /* resumptionMasterSecret */
        start local 5 // javax.crypto.SecretKey resumptionMasterSecret
        32: .line 384
            aload 5 /* resumptionMasterSecret */
            ifnonnull 37
        33: .line 385
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 36
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 36
        34: .line 387
            ldc "No session ticket produced: no resumption secret"
            iconst_0
            anewarray java.lang.Object
        35: .line 386
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        36: .line 391
      StackMap locals: sun.security.ssl.SSLSessionContextImpl sun.security.ssl.SessionId javax.crypto.SecretKey
      StackMap stack:
            aconst_null
            areturn
        37: .line 395
      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
        38: .line 396
            aload 6 /* nonce */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 7 /* nonceArr */
        start local 7 // byte[] nonceArr
        39: .line 398
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
        40: .line 399
            aload 5 /* resumptionMasterSecret */
            aload 7 /* nonceArr */
        41: .line 397
            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
        42: .line 401
            aload 3 /* sessionCache */
            invokevirtual sun.security.ssl.SSLSessionContextImpl.getSessionTimeout:()I
            istore 9 /* sessionTimeoutSeconds */
        start local 9 // int sessionTimeoutSeconds
        43: .line 402
            iload 9 /* sessionTimeoutSeconds */
            ldc 604800
            if_icmple 48
        44: .line 403
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 47
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 47
        45: .line 405
            ldc "No session ticket produced: session timeout"
            iconst_0
            anewarray java.lang.Object
        46: .line 404
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        47: .line 409
      StackMap locals: sun.security.ssl.NewSessionTicket$T13NewSessionTicketProducer 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
        48: .line 412
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 10 /* nstm */
        start local 10 // sun.security.ssl.NewSessionTicket$NewSessionTicketMessage nstm
        49: .line 415
            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
        50: .line 414
            astore 11 /* sessionCopy */
        start local 11 // sun.security.ssl.SSLSessionImpl sessionCopy
        51: .line 416
            aload 11 /* sessionCopy */
            aload 8 /* psk */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPreSharedKey:(Ljavax/crypto/SecretKey;)V
        52: .line 417
            aload 11 /* sessionCopy */
            aload 4 /* newId */
            invokevirtual sun.security.ssl.SessionId.getId:()[B
            invokevirtual sun.security.ssl.SSLSessionImpl.setPskIdentity:([B)V
        53: .line 420
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.statelessResumption:Z
            ifeq 68
        54: .line 421
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.isStatelessable:()Z
            ifeq 68
        55: .line 422
            new sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage
            dup
            aload 2 /* hc */
        56: .line 423
            iload 9 /* sessionTimeoutSeconds */
        57: .line 424
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        58: .line 425
            aload 7 /* nonceArr */
        59: .line 426
            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
        60: .line 422
            invokespecial sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage.<init>:(Lsun/security/ssl/HandshakeContext;ILjava/security/SecureRandom;[B[B)V
            astore 10 /* nstm */
        61: .line 428
            aload 10 /* nstm */
            invokevirtual sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.isValid:()Z
            ifne 64
        62: .line 429
            aload 2 /* hc */
            iconst_0
            putfield sun.security.ssl.HandshakeContext.statelessResumption:Z
        63: .line 430
            goto 68
        64: .line 431
      StackMap locals: sun.security.ssl.NewSessionTicket$NewSessionTicketMessage sun.security.ssl.SSLSessionImpl
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 68
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 68
        65: .line 433
            ldc "Produced NewSessionTicket stateless post-handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        66: .line 434
            aload 10 /* nstm */
            aastore
        67: .line 432
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        68: .line 440
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.statelessResumption:Z
            ifeq 70
        69: .line 441
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.isStatelessable:()Z
            ifne 81
        70: .line 442
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage
            dup
            aload 2 /* hc */
            iload 9 /* sessionTimeoutSeconds */
        71: .line 443
            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 */
        72: .line 444
            aload 4 /* newId */
            invokevirtual sun.security.ssl.SessionId.getId:()[B
        73: .line 442
            invokespecial sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage.<init>:(Lsun/security/ssl/HandshakeContext;ILjava/security/SecureRandom;[B[B)V
            astore 10 /* nstm */
        74: .line 445
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 78
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 78
        75: .line 447
            ldc "Produced NewSessionTicket post-handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        76: .line 448
            aload 10 /* nstm */
            aastore
        77: .line 446
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        78: .line 454
      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
        79: .line 455
            aload 11 /* sessionCopy */
            aload 10 /* nstm */
            invokevirtual sun.security.ssl.NewSessionTicket$NewSessionTicketMessage.getTicketAgeAdd:()I
            invokevirtual sun.security.ssl.SSLSessionImpl.setTicketAgeAdd:(I)V
        80: .line 456
            aload 3 /* sessionCache */
            aload 11 /* sessionCopy */
            invokevirtual sun.security.ssl.SSLSessionContextImpl.put:(Lsun/security/ssl/SSLSessionImpl;)V
        81: .line 460
      StackMap locals:
      StackMap stack:
            aload 10 /* nstm */
            ifnull 86
        82: .line 462
            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
        83: .line 463
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
        84: .line 471
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.needHandshakeFinishedStatus:Z
            ifeq 86
        85: .line 472
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            iconst_0
            putfield sun.security.ssl.TransportContext.needHandshakeFinishedStatus:Z
        86: .line 477
      StackMap locals:
      StackMap stack:
            aload 2 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            invokevirtual sun.security.ssl.TransportContext.finishPostHandshake:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            pop
        87: .line 480
            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$T13NewSessionTicketProducer this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   88     0                    this  Lsun/security/ssl/NewSessionTicket$T13NewSessionTicketProducer;
            0   88     1                 context  Lsun/security/ssl/ConnectionContext;
            1   88     2                      hc  Lsun/security/ssl/HandshakeContext;
           14   20     3                pkemSpec  Lsun/security/ssl/PskKeyExchangeModesExtension$PskKeyExchangeModesSpec;
           27   88     3            sessionCache  Lsun/security/ssl/SSLSessionContextImpl;
           30   88     4                   newId  Lsun/security/ssl/SessionId;
           32   88     5  resumptionMasterSecret  Ljavax/crypto/SecretKey;
           38   88     6                   nonce  Ljava/math/BigInteger;
           39   88     7                nonceArr  [B
           42   88     8                     psk  Ljavax/crypto/SecretKey;
           43   88     9   sessionTimeoutSeconds  I
           49   88    10                    nstm  Lsun/security/ssl/NewSessionTicket$NewSessionTicketMessage;
           51   88    11             sessionCopy  Lsun/security/ssl/SSLSessionImpl;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
}
SourceFile: "NewSessionTicket.java"
NestHost: sun.security.ssl.NewSessionTicket
InnerClasses:
  public final HandshakeStatus = javax.net.ssl.SSLEngineResult$HandshakeStatus of javax.net.ssl.SSLEngineResult
  final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
  abstract NewSessionTicketMessage = sun.security.ssl.NewSessionTicket$NewSessionTicketMessage of sun.security.ssl.NewSessionTicket
  final T13NewSessionTicketMessage = sun.security.ssl.NewSessionTicket$T13NewSessionTicketMessage of sun.security.ssl.NewSessionTicket
  private final T13NewSessionTicketProducer = sun.security.ssl.NewSessionTicket$T13NewSessionTicketProducer 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