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