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