final class sun.security.ssl.ServerHello$T13ServerHelloProducer implements sun.security.ssl.HandshakeProducer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.ServerHello$T13ServerHelloProducer
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 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/ServerHello$T13ServerHelloProducer;
public byte[] produce(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=26, args_size=3
start local 0 start local 1 start local 2 0: aload 1
checkcast sun.security.ssl.ServerHandshakeContext
astore 3
start local 3 1: aload 2
checkcast sun.security.ssl.ClientHello$ClientHelloMessage
astore 4
start local 4 2: aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.engineGetServerSessionContext:()Ljavax/net/ssl/SSLSessionContext;
3: checkcast sun.security.ssl.SSLSessionContextImpl
astore 5
start local 5 4: aload 3
getfield sun.security.ssl.ServerHandshakeContext.isResumption:Z
ifeq 5
aload 3
getfield sun.security.ssl.ServerHandshakeContext.resumingSession:Lsun/security/ssl/SSLSessionImpl;
ifnonnull 35
5: StackMap locals: sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLSessionContextImpl
StackMap stack:
aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.enableSessionCreation:Z
ifne 9
6: new javax.net.ssl.SSLException
dup
7: ldc "Not resumption, and no new session is allowed"
8: invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
aload 3
getfield sun.security.ssl.ServerHandshakeContext.localSupportedSignAlgs:Ljava/util/List;
ifnonnull 15
10: aload 3
11: aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
12: aload 3
getfield sun.security.ssl.ServerHandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.activeProtocols:Ljava/util/List;
13: invokestatic sun.security.ssl.SignatureScheme.getSupportedAlgorithms:(Lsun/security/ssl/SSLConfiguration;Ljava/security/AlgorithmConstraints;Ljava/util/List;)Ljava/util/List;
14: putfield sun.security.ssl.ServerHandshakeContext.localSupportedSignAlgs:Ljava/util/List;
15: StackMap locals:
StackMap stack:
new sun.security.ssl.SSLSessionImpl
dup
aload 3
getstatic sun.security.ssl.CipherSuite.C_NULL:Lsun/security/ssl/CipherSuite;
invokespecial sun.security.ssl.SSLSessionImpl.<init>:(Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/CipherSuite;)V
16: astore 6
start local 6 17: aload 6
aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.maximumPacketSize:I
invokevirtual sun.security.ssl.SSLSessionImpl.setMaximumPacketSize:(I)V
18: aload 3
aload 6
putfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
19: aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
20: getstatic sun.security.ssl.SSLHandshake.CLIENT_HELLO:Lsun/security/ssl/SSLHandshake;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
21: invokevirtual sun.security.ssl.SSLConfiguration.getEnabledExtensions:(Lsun/security/ssl/SSLHandshake;Lsun/security/ssl/ProtocolVersion;)[Lsun/security/ssl/SSLExtension;
22: astore 7
start local 7 23: aload 4
getfield sun.security.ssl.ClientHello$ClientHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 3
aload 7
invokevirtual sun.security.ssl.SSLExtensions.consumeOnTrade:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
24: aload 3
aload 4
invokestatic sun.security.ssl.ServerHello$T13ServerHelloProducer.chooseCipherSuite:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)Lsun/security/ssl/CipherSuite;
astore 8
start local 8 25: aload 8
ifnonnull 29
26: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
27: ldc "no cipher suites in common"
28: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
29: StackMap locals: sun.security.ssl.SSLSessionImpl sun.security.ssl.SSLExtension[] sun.security.ssl.CipherSuite
StackMap stack:
aload 3
aload 8
putfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
30: aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 8
invokevirtual sun.security.ssl.SSLSessionImpl.setSuite:(Lsun/security/ssl/CipherSuite;)V
31: aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
32: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
33: invokevirtual sun.security.ssl.HandshakeHash.determine:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;)V
end local 8 end local 7 end local 6 34: goto 52
35: StackMap locals:
StackMap stack:
aload 3
aload 3
getfield sun.security.ssl.ServerHandshakeContext.resumingSession:Lsun/security/ssl/SSLSessionImpl;
putfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
36: aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
37: getstatic sun.security.ssl.SSLHandshake.CLIENT_HELLO:Lsun/security/ssl/SSLHandshake;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
38: invokevirtual sun.security.ssl.SSLConfiguration.getEnabledExtensions:(Lsun/security/ssl/SSLHandshake;Lsun/security/ssl/ProtocolVersion;)[Lsun/security/ssl/SSLExtension;
39: astore 6
start local 6 40: aload 4
getfield sun.security.ssl.ClientHello$ClientHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 3
aload 6
invokevirtual sun.security.ssl.SSLExtensions.consumeOnTrade:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
41: aload 3
42: aload 3
getfield sun.security.ssl.ServerHandshakeContext.resumingSession:Lsun/security/ssl/SSLSessionImpl;
invokevirtual sun.security.ssl.SSLSessionImpl.getProtocolVersion:()Lsun/security/ssl/ProtocolVersion;
43: putfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
44: aload 3
aload 3
getfield sun.security.ssl.ServerHandshakeContext.resumingSession:Lsun/security/ssl/SSLSessionImpl;
invokevirtual sun.security.ssl.SSLSessionImpl.getSuite:()Lsun/security/ssl/CipherSuite;
putfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
45: aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
46: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
47: invokevirtual sun.security.ssl.HandshakeHash.determine:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;)V
48: aload 3
49: aload 3
getfield sun.security.ssl.ServerHandshakeContext.resumingSession:Lsun/security/ssl/SSLSessionImpl;
invokevirtual sun.security.ssl.SSLSessionImpl.consumePreSharedKey:()Ljavax/crypto/SecretKey;
50: invokestatic sun.security.ssl.ServerHello.setUpPskKD:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
51: aload 5
aload 3
getfield sun.security.ssl.ServerHandshakeContext.resumingSession:Lsun/security/ssl/SSLSessionImpl;
invokevirtual sun.security.ssl.SSLSessionImpl.getSessionId:()Lsun/security/ssl/SessionId;
invokevirtual sun.security.ssl.SSLSessionContextImpl.remove:(Lsun/security/ssl/SessionId;)V
end local 6 52: StackMap locals:
StackMap stack:
aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
getstatic sun.security.ssl.SSLHandshake.ENCRYPTED_EXTENSIONS:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
53: getstatic sun.security.ssl.SSLHandshake.ENCRYPTED_EXTENSIONS:Lsun/security/ssl/SSLHandshake;
54: invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
55: aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
getstatic sun.security.ssl.SSLHandshake.FINISHED:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
56: getstatic sun.security.ssl.SSLHandshake.FINISHED:Lsun/security/ssl/SSLHandshake;
57: invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
58: new sun.security.ssl.ServerHello$ServerHelloMessage
dup
aload 3
59: getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
60: aload 4
getfield sun.security.ssl.ClientHello$ClientHelloMessage.sessionId:Lsun/security/ssl/SessionId;
61: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
62: new sun.security.ssl.RandomCookie
dup
aload 3
invokespecial sun.security.ssl.RandomCookie.<init>:(Lsun/security/ssl/HandshakeContext;)V
63: aload 4
64: invokespecial sun.security.ssl.ServerHello$ServerHelloMessage.<init>:(Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/SessionId;Lsun/security/ssl/CipherSuite;Lsun/security/ssl/RandomCookie;Lsun/security/ssl/ClientHello$ClientHelloMessage;)V
astore 6
start local 6 65: aload 3
aload 6
getfield sun.security.ssl.ServerHello$ServerHelloMessage.serverRandom:Lsun/security/ssl/RandomCookie;
putfield sun.security.ssl.ServerHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
66: aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
67: getstatic sun.security.ssl.SSLHandshake.SERVER_HELLO:Lsun/security/ssl/SSLHandshake;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
68: invokevirtual sun.security.ssl.SSLConfiguration.getEnabledExtensions:(Lsun/security/ssl/SSLHandshake;Lsun/security/ssl/ProtocolVersion;)[Lsun/security/ssl/SSLExtension;
69: astore 7
start local 7 70: aload 6
getfield sun.security.ssl.ServerHello$ServerHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 3
aload 7
invokevirtual sun.security.ssl.SSLExtensions.produce:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
71: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 73
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 73
72: ldc "Produced ServerHello handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 6
aastore
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
73: StackMap locals: sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[]
StackMap stack:
aload 6
aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
invokevirtual sun.security.ssl.ServerHello$ServerHelloMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
74: aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
75: aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.update:()V
76: aload 3
getfield sun.security.ssl.ServerHandshakeContext.handshakeKeyExchange:Lsun/security/ssl/SSLKeyExchange;
astore 8
start local 8 77: aload 8
ifnonnull 81
78: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
79: ldc "Not negotiated key shares"
80: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
81: StackMap locals: sun.security.ssl.SSLKeyExchange
StackMap stack:
aload 8
aload 3
invokevirtual sun.security.ssl.SSLKeyExchange.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLKeyDerivation;
astore 9
start local 9 82: aload 9
83: ldc "TlsHandshakeSecret"
aconst_null
84: invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 10
start local 10 85: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokestatic sun.security.ssl.SSLTrafficKeyDerivation.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SSLTrafficKeyDerivation;
86: astore 11
start local 11 87: aload 11
ifnonnull 93
88: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
89: new java.lang.StringBuilder
dup
ldc "Not supported key derivation: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
90: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
91: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
92: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
93: StackMap locals: sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLTrafficKeyDerivation
StackMap stack:
new sun.security.ssl.SSLSecretDerivation
dup
aload 3
aload 10
invokespecial sun.security.ssl.SSLSecretDerivation.<init>:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
94: astore 12
start local 12 95: aload 12
96: ldc "TlsClientHandshakeTrafficSecret"
aconst_null
97: invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 13
start local 13 98: aload 11
aload 3
aload 13
invokevirtual sun.security.ssl.SSLTrafficKeyDerivation.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)Lsun/security/ssl/SSLKeyDerivation;
99: astore 14
start local 14 100: aload 14
101: ldc "TlsKey"
aconst_null
102: invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 15
start local 15 103: aload 14
104: ldc "TlsIv"
aconst_null
105: invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 16
start local 16 106: new javax.crypto.spec.IvParameterSpec
dup
aload 16
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
107: astore 17
start local 17 108: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.bulkCipher:Lsun/security/ssl/SSLCipher;
109: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokestatic sun.security.ssl.Authenticator.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/Authenticator;
110: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
aload 15
aload 17
111: aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
112: invokevirtual sun.security.ssl.SSLCipher.createReadCipher:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/ProtocolVersion;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;)Lsun/security/ssl/SSLCipher$SSLReadCipher;
113: astore 18
start local 18 114: goto 119
end local 18 StackMap locals: sun.security.ssl.ServerHello$T13ServerHelloProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLSessionContextImpl sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] sun.security.ssl.SSLKeyExchange sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLTrafficKeyDerivation sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec
StackMap stack: java.security.GeneralSecurityException
115: astore 19
start local 19 116: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
117: ldc "Missing cipher algorithm"
aload 19
118: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 19 start local 18 119: StackMap locals: sun.security.ssl.SSLCipher$SSLReadCipher
StackMap stack:
aload 18
ifnonnull 126
120: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
121: new java.lang.StringBuilder
dup
ldc "Illegal cipher suite ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
122: ldc ") and protocol version ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
123: ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
124: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
125: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
126: StackMap locals:
StackMap stack:
aload 3
aload 13
putfield sun.security.ssl.ServerHandshakeContext.baseReadSecret:Ljavax/crypto/SecretKey;
127: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.inputRecord:Lsun/security/ssl/InputRecord;
aload 18
invokevirtual sun.security.ssl.InputRecord.changeReadCiphers:(Lsun/security/ssl/SSLCipher$SSLReadCipher;)V
128: aload 12
129: ldc "TlsServerHandshakeTrafficSecret"
aconst_null
130: invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 19
start local 19 131: aload 11
aload 3
aload 19
invokevirtual sun.security.ssl.SSLTrafficKeyDerivation.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)Lsun/security/ssl/SSLKeyDerivation;
132: astore 20
start local 20 133: aload 20
134: ldc "TlsKey"
aconst_null
135: invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 21
start local 21 136: aload 20
137: ldc "TlsIv"
aconst_null
138: invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 22
start local 22 139: new javax.crypto.spec.IvParameterSpec
dup
aload 22
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
140: astore 23
start local 23 141: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.bulkCipher:Lsun/security/ssl/SSLCipher;
142: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokestatic sun.security.ssl.Authenticator.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/Authenticator;
143: aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
aload 21
aload 23
144: aload 3
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
145: invokevirtual sun.security.ssl.SSLCipher.createWriteCipher:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/ProtocolVersion;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;)Lsun/security/ssl/SSLCipher$SSLWriteCipher;
146: astore 24
start local 24 147: goto 152
end local 24 StackMap locals: sun.security.ssl.ServerHello$T13ServerHelloProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLSessionContextImpl sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] sun.security.ssl.SSLKeyExchange sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLTrafficKeyDerivation sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLReadCipher javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec
StackMap stack: java.security.GeneralSecurityException
148: astore 25
start local 25 149: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
150: ldc "Missing cipher algorithm"
aload 25
151: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 25 start local 24 152: StackMap locals: sun.security.ssl.SSLCipher$SSLWriteCipher
StackMap stack:
aload 24
ifnonnull 159
153: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
154: new java.lang.StringBuilder
dup
ldc "Illegal cipher suite ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
155: ldc ") and protocol version ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
156: ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
157: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
158: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
159: StackMap locals:
StackMap stack:
aload 3
aload 19
putfield sun.security.ssl.ServerHandshakeContext.baseWriteSecret:Ljavax/crypto/SecretKey;
160: aload 3
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.outputRecord:Lsun/security/ssl/OutputRecord;
161: aload 24
aload 4
getfield sun.security.ssl.ClientHello$ClientHelloMessage.sessionId:Lsun/security/ssl/SessionId;
invokevirtual sun.security.ssl.SessionId.length:()I
ifeq 162
iconst_1
goto 163
StackMap locals: sun.security.ssl.ServerHello$T13ServerHelloProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLSessionContextImpl sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] sun.security.ssl.SSLKeyExchange sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLTrafficKeyDerivation sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLReadCipher javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLWriteCipher
StackMap stack: sun.security.ssl.OutputRecord sun.security.ssl.SSLCipher$SSLWriteCipher
162: iconst_0
163: StackMap locals: sun.security.ssl.ServerHello$T13ServerHelloProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLSessionContextImpl sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] sun.security.ssl.SSLKeyExchange sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLTrafficKeyDerivation sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLReadCipher javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLWriteCipher
StackMap stack: sun.security.ssl.OutputRecord sun.security.ssl.SSLCipher$SSLWriteCipher int
invokevirtual sun.security.ssl.OutputRecord.changeWriteCiphers:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;Z)V
164: aload 3
aload 12
putfield sun.security.ssl.ServerHandshakeContext.handshakeKeyDerivation:Lsun/security/ssl/SSLKeyDerivation;
165: aload 5
invokevirtual sun.security.ssl.SSLSessionContextImpl.statelessEnabled:()Z
ifeq 167
166: aload 3
iconst_1
putfield sun.security.ssl.ServerHandshakeContext.statelessResumption:Z
167: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 24 end local 23 end local 22 end local 21 end local 20 end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 168 0 this Lsun/security/ssl/ServerHello$T13ServerHelloProducer;
0 168 1 context Lsun/security/ssl/ConnectionContext;
0 168 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
1 168 3 shc Lsun/security/ssl/ServerHandshakeContext;
2 168 4 clientHello Lsun/security/ssl/ClientHello$ClientHelloMessage;
4 168 5 sessionCache Lsun/security/ssl/SSLSessionContextImpl;
17 34 6 session Lsun/security/ssl/SSLSessionImpl;
23 34 7 enabledExtensions [Lsun/security/ssl/SSLExtension;
25 34 8 cipherSuite Lsun/security/ssl/CipherSuite;
40 52 6 enabledExtensions [Lsun/security/ssl/SSLExtension;
65 168 6 shm Lsun/security/ssl/ServerHello$ServerHelloMessage;
70 168 7 serverHelloExtensions [Lsun/security/ssl/SSLExtension;
77 168 8 ke Lsun/security/ssl/SSLKeyExchange;
82 168 9 handshakeKD Lsun/security/ssl/SSLKeyDerivation;
85 168 10 handshakeSecret Ljavax/crypto/SecretKey;
87 168 11 kdg Lsun/security/ssl/SSLTrafficKeyDerivation;
95 168 12 kd Lsun/security/ssl/SSLKeyDerivation;
98 168 13 readSecret Ljavax/crypto/SecretKey;
100 168 14 readKD Lsun/security/ssl/SSLKeyDerivation;
103 168 15 readKey Ljavax/crypto/SecretKey;
106 168 16 readIvSecret Ljavax/crypto/SecretKey;
108 168 17 readIv Ljavax/crypto/spec/IvParameterSpec;
114 115 18 readCipher Lsun/security/ssl/SSLCipher$SSLReadCipher;
119 168 18 readCipher Lsun/security/ssl/SSLCipher$SSLReadCipher;
116 119 19 gse Ljava/security/GeneralSecurityException;
131 168 19 writeSecret Ljavax/crypto/SecretKey;
133 168 20 writeKD Lsun/security/ssl/SSLKeyDerivation;
136 168 21 writeKey Ljavax/crypto/SecretKey;
139 168 22 writeIvSecret Ljavax/crypto/SecretKey;
141 168 23 writeIv Ljavax/crypto/spec/IvParameterSpec;
147 148 24 writeCipher Lsun/security/ssl/SSLCipher$SSLWriteCipher;
152 168 24 writeCipher Lsun/security/ssl/SSLCipher$SSLWriteCipher;
149 152 25 gse Ljava/security/GeneralSecurityException;
Exception table:
from to target type
108 114 115 Class java.security.GeneralSecurityException
141 147 148 Class java.security.GeneralSecurityException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
private static sun.security.ssl.CipherSuite chooseCipherSuite(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.ClientHello$ClientHelloMessage);
descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)Lsun/security/ssl/CipherSuite;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.preferLocalCipherSuites:Z
ifeq 4
1: aload 0
getfield sun.security.ssl.ServerHandshakeContext.activeCipherSuites:Ljava/util/List;
astore 2
start local 2 2: aload 1
getfield sun.security.ssl.ClientHello$ClientHelloMessage.cipherSuites:Ljava/util/List;
astore 3
start local 3 3: goto 6
end local 3 end local 2 4: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHello$ClientHelloMessage.cipherSuites:Ljava/util/List;
astore 2
start local 2 5: aload 0
getfield sun.security.ssl.ServerHandshakeContext.activeCipherSuites:Ljava/util/List;
astore 3
start local 3 6: StackMap locals: java.util.List java.util.List
StackMap stack:
aconst_null
astore 4
start local 4 7: getstatic sun.security.ssl.ServerHandshakeContext.legacyAlgorithmConstraints:Ljava/security/AlgorithmConstraints;
8: astore 5
start local 5 9: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 26
StackMap locals: sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.List java.util.List sun.security.ssl.CipherSuite java.security.AlgorithmConstraints top java.util.Iterator
StackMap stack:
10: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CipherSuite
astore 6
start local 6 11: aload 3
aload 0
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
aload 6
12: invokestatic sun.security.ssl.HandshakeContext.isNegotiable:(Ljava/util/List;Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;)Z
13: ifne 15
14: goto 26
15: StackMap locals: sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.List java.util.List sun.security.ssl.CipherSuite java.security.AlgorithmConstraints sun.security.ssl.CipherSuite java.util.Iterator
StackMap stack:
aload 4
ifnonnull 23
16: aload 5
17: getstatic java.security.CryptoPrimitive.KEY_AGREEMENT:Ljava/security/CryptoPrimitive;
invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
18: aload 6
getfield sun.security.ssl.CipherSuite.name:Ljava/lang/String;
aconst_null
19: invokeinterface java.security.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z
20: ifne 23
21: aload 6
astore 4
22: goto 26
23: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 25
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 25
24: new java.lang.StringBuilder
dup
ldc "use cipher suite "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
getfield sun.security.ssl.CipherSuite.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
25: StackMap locals:
StackMap stack:
aload 6
areturn
end local 6 26: StackMap locals: sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.List java.util.List sun.security.ssl.CipherSuite java.security.AlgorithmConstraints top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
27: aload 4
ifnull 32
28: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 31
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 31
29: new java.lang.StringBuilder
dup
ldc "use legacy cipher suite "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
getfield sun.security.ssl.CipherSuite.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
30: invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
31: StackMap locals: sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.List java.util.List sun.security.ssl.CipherSuite java.security.AlgorithmConstraints
StackMap stack:
aload 4
areturn
32: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 shc Lsun/security/ssl/ServerHandshakeContext;
0 33 1 clientHello Lsun/security/ssl/ClientHello$ClientHelloMessage;
2 4 2 preferred Ljava/util/List<Lsun/security/ssl/CipherSuite;>;
5 33 2 preferred Ljava/util/List<Lsun/security/ssl/CipherSuite;>;
3 4 3 proposed Ljava/util/List<Lsun/security/ssl/CipherSuite;>;
6 33 3 proposed Ljava/util/List<Lsun/security/ssl/CipherSuite;>;
7 33 4 legacySuite Lsun/security/ssl/CipherSuite;
9 33 5 legacyConstraints Ljava/security/AlgorithmConstraints;
11 26 6 cs Lsun/security/ssl/CipherSuite;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
shc
clientHello
}
SourceFile: "ServerHello.java"
NestHost: sun.security.ssl.ServerHello
InnerClasses:
final ClientHelloMessage = sun.security.ssl.ClientHello$ClientHelloMessage of sun.security.ssl.ClientHello
abstract SSLReadCipher = sun.security.ssl.SSLCipher$SSLReadCipher of sun.security.ssl.SSLCipher
abstract SSLWriteCipher = sun.security.ssl.SSLCipher$SSLWriteCipher of sun.security.ssl.SSLCipher
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
final ServerHelloMessage = sun.security.ssl.ServerHello$ServerHelloMessage of sun.security.ssl.ServerHello
private final T13ServerHelloProducer = sun.security.ssl.ServerHello$T13ServerHelloProducer of sun.security.ssl.ServerHello