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