final class sun.security.ssl.ServerHello$ServerHelloConsumer implements sun.security.ssl.SSLConsumer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.ServerHello$ServerHelloConsumer
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$ServerHelloConsumer;
public void consume(sun.security.ssl.ConnectionContext, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/ConnectionContext;Ljava/nio/ByteBuffer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
checkcast sun.security.ssl.ClientHandshakeContext
astore 3
start local 3 1: aload 3
getfield sun.security.ssl.ClientHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
getstatic sun.security.ssl.SSLHandshake.SERVER_HELLO:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
invokevirtual java.util.LinkedHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: aload 3
getfield sun.security.ssl.ClientHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
invokevirtual java.util.LinkedHashMap.isEmpty:()Z
ifne 6
3: aload 3
getfield sun.security.ssl.ClientHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
4: getstatic sun.security.ssl.SSLHandshake.HELLO_VERIFY_REQUEST:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
5: invokevirtual java.util.LinkedHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
6: StackMap locals: sun.security.ssl.ClientHandshakeContext
StackMap stack:
aload 3
getfield sun.security.ssl.ClientHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
invokevirtual java.util.LinkedHashMap.isEmpty:()Z
ifne 10
7: aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
8: ldc "No more message expected before ServerHello is processed"
9: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
10: StackMap locals:
StackMap stack:
new sun.security.ssl.ServerHello$ServerHelloMessage
dup
aload 3
aload 2
invokespecial sun.security.ssl.ServerHello$ServerHelloMessage.<init>:(Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
astore 4
start local 4 11: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 13
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 13
12: ldc "Consuming ServerHello handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
aastore
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
13: StackMap locals: sun.security.ssl.ServerHello$ServerHelloMessage
StackMap stack:
aload 4
getfield sun.security.ssl.ServerHello$ServerHelloMessage.serverRandom:Lsun/security/ssl/RandomCookie;
invokevirtual sun.security.ssl.RandomCookie.isHelloRetryRequest:()Z
ifeq 16
14: aload 0
aload 3
aload 4
invokevirtual sun.security.ssl.ServerHello$ServerHelloConsumer.onHelloRetryRequest:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/ServerHello$ServerHelloMessage;)V
15: goto 17
16: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 4
invokevirtual sun.security.ssl.ServerHello$ServerHelloConsumer.onServerHello:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/ServerHello$ServerHelloMessage;)V
17: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lsun/security/ssl/ServerHello$ServerHelloConsumer;
0 18 1 context Lsun/security/ssl/ConnectionContext;
0 18 2 message Ljava/nio/ByteBuffer;
1 18 3 chc Lsun/security/ssl/ClientHandshakeContext;
11 18 4 shm Lsun/security/ssl/ServerHello$ServerHelloMessage;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
private void onHelloRetryRequest(sun.security.ssl.ClientHandshakeContext, sun.security.ssl.ServerHello$ServerHelloMessage);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/ServerHello$ServerHelloMessage;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: iconst_1
anewarray sun.security.ssl.SSLExtension
dup
iconst_0
1: getstatic sun.security.ssl.SSLExtension.HRR_SUPPORTED_VERSIONS:Lsun/security/ssl/SSLExtension;
aastore
2: astore 3
start local 3 3: aload 2
getfield sun.security.ssl.ServerHello$ServerHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 1
aload 3
invokevirtual sun.security.ssl.SSLExtensions.consumeOnLoad:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
4: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeExtensions:Ljava/util/Map;
5: getstatic sun.security.ssl.SSLExtension.HRR_SUPPORTED_VERSIONS:Lsun/security/ssl/SSLExtension;
6: invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec
7: astore 5
start local 5 8: aload 5
ifnull 12
9: aload 5
getfield sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec.selectedVersion:I
invokestatic sun.security.ssl.ProtocolVersion.valueOf:(I)Lsun/security/ssl/ProtocolVersion;
10: astore 4
start local 4 11: goto 13
end local 4 12: StackMap locals: sun.security.ssl.ServerHello$ServerHelloConsumer sun.security.ssl.ClientHandshakeContext sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] top sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec
StackMap stack:
aload 2
getfield sun.security.ssl.ServerHello$ServerHelloMessage.serverVersion:Lsun/security/ssl/ProtocolVersion;
astore 4
start local 4 13: StackMap locals: sun.security.ssl.ServerHello$ServerHelloConsumer sun.security.ssl.ClientHandshakeContext sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] sun.security.ssl.ProtocolVersion sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.activeProtocols:Ljava/util/List;
aload 4
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 20
14: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.PROTOCOL_VERSION:Lsun/security/ssl/Alert;
15: new java.lang.StringBuilder
dup
ldc "The server selected protocol version "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
16: ldc " is not accepted by client preferences "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: aload 1
getfield sun.security.ssl.ClientHandshakeContext.activeProtocols:Ljava/util/List;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
20: StackMap locals:
StackMap stack:
aload 4
invokevirtual sun.security.ssl.ProtocolVersion.useTLS13PlusSpec:()Z
ifne 24
21: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.PROTOCOL_VERSION:Lsun/security/ssl/Alert;
22: new java.lang.StringBuilder
dup
ldc "Unexpected HelloRetryRequest for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
getfield sun.security.ssl.ProtocolVersion.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
24: StackMap locals:
StackMap stack:
aload 1
aload 4
putfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
25: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 28
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 28
26: new java.lang.StringBuilder
dup
ldc "Negotiated protocol version: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
getfield sun.security.ssl.ProtocolVersion.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
27: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
28: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakePossessions:Ljava/util/List;
invokeinterface java.util.List.clear:()V
29: aload 4
getfield sun.security.ssl.ProtocolVersion.isDTLS:Z
ifeq 32
30: getstatic sun.security.ssl.ServerHello.d13HrrHandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
aload 1
aload 2
invokeinterface sun.security.ssl.HandshakeConsumer.consume:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
31: goto 33
32: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.ServerHello.t13HrrHandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
aload 1
aload 2
invokeinterface sun.security.ssl.HandshakeConsumer.consume:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
33: StackMap locals:
StackMap stack:
return
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 34 0 this Lsun/security/ssl/ServerHello$ServerHelloConsumer;
0 34 1 chc Lsun/security/ssl/ClientHandshakeContext;
0 34 2 helloRetryRequest Lsun/security/ssl/ServerHello$ServerHelloMessage;
3 34 3 extTypes [Lsun/security/ssl/SSLExtension;
11 12 4 serverVersion Lsun/security/ssl/ProtocolVersion;
13 34 4 serverVersion Lsun/security/ssl/ProtocolVersion;
8 34 5 svs Lsun/security/ssl/SupportedVersionsExtension$SHSupportedVersionsSpec;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
chc
helloRetryRequest
private void onServerHello(sun.security.ssl.ClientHandshakeContext, sun.security.ssl.ServerHello$ServerHelloMessage);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/ServerHello$ServerHelloMessage;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: iconst_1
anewarray sun.security.ssl.SSLExtension
dup
iconst_0
1: getstatic sun.security.ssl.SSLExtension.SH_SUPPORTED_VERSIONS:Lsun/security/ssl/SSLExtension;
aastore
2: astore 3
start local 3 3: aload 2
getfield sun.security.ssl.ServerHello$ServerHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 1
aload 3
invokevirtual sun.security.ssl.SSLExtensions.consumeOnLoad:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
4: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeExtensions:Ljava/util/Map;
5: getstatic sun.security.ssl.SSLExtension.SH_SUPPORTED_VERSIONS:Lsun/security/ssl/SSLExtension;
6: invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec
7: astore 5
start local 5 8: aload 5
ifnull 12
9: aload 5
getfield sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec.selectedVersion:I
invokestatic sun.security.ssl.ProtocolVersion.valueOf:(I)Lsun/security/ssl/ProtocolVersion;
10: astore 4
start local 4 11: goto 13
end local 4 12: StackMap locals: sun.security.ssl.ServerHello$ServerHelloConsumer sun.security.ssl.ClientHandshakeContext sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] top sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec
StackMap stack:
aload 2
getfield sun.security.ssl.ServerHello$ServerHelloMessage.serverVersion:Lsun/security/ssl/ProtocolVersion;
astore 4
start local 4 13: StackMap locals: sun.security.ssl.ServerHello$ServerHelloConsumer sun.security.ssl.ClientHandshakeContext sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] sun.security.ssl.ProtocolVersion sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.activeProtocols:Ljava/util/List;
aload 4
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 20
14: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.PROTOCOL_VERSION:Lsun/security/ssl/Alert;
15: new java.lang.StringBuilder
dup
ldc "The server selected protocol version "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
16: ldc " is not accepted by client preferences "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: aload 1
getfield sun.security.ssl.ClientHandshakeContext.activeProtocols:Ljava/util/List;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
20: StackMap locals:
StackMap stack:
aload 1
aload 4
putfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
21: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.isNegotiated:Z
ifne 24
22: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
aload 1
getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.TransportContext.protocolVersion:Lsun/security/ssl/ProtocolVersion;
23: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.outputRecord:Lsun/security/ssl/OutputRecord;
aload 1
getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.OutputRecord.setVersion:(Lsun/security/ssl/ProtocolVersion;)V
24: StackMap locals:
StackMap stack:
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 "Negotiated protocol version: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
getfield sun.security.ssl.ProtocolVersion.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.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
27: StackMap locals:
StackMap stack:
aload 2
getfield sun.security.ssl.ServerHello$ServerHelloMessage.serverRandom:Lsun/security/ssl/RandomCookie;
aload 1
invokevirtual sun.security.ssl.RandomCookie.isVersionDowngrade:(Lsun/security/ssl/HandshakeContext;)Z
ifeq 31
28: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
29: ldc "A potential protocol version downgrade attack"
30: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
31: StackMap locals:
StackMap stack:
aload 4
getfield sun.security.ssl.ProtocolVersion.isDTLS:Z
ifeq 38
32: aload 4
invokevirtual sun.security.ssl.ProtocolVersion.useTLS13PlusSpec:()Z
ifeq 35
33: getstatic sun.security.ssl.ServerHello.d13HandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
aload 1
aload 2
invokeinterface sun.security.ssl.HandshakeConsumer.consume:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
34: goto 43
35: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakePossessions:Ljava/util/List;
invokeinterface java.util.List.clear:()V
36: getstatic sun.security.ssl.ServerHello.d12HandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
aload 1
aload 2
invokeinterface sun.security.ssl.HandshakeConsumer.consume:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
37: goto 43
38: StackMap locals:
StackMap stack:
aload 4
invokevirtual sun.security.ssl.ProtocolVersion.useTLS13PlusSpec:()Z
ifeq 41
39: getstatic sun.security.ssl.ServerHello.t13HandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
aload 1
aload 2
invokeinterface sun.security.ssl.HandshakeConsumer.consume:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
40: goto 43
41: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakePossessions:Ljava/util/List;
invokeinterface java.util.List.clear:()V
42: getstatic sun.security.ssl.ServerHello.t12HandshakeConsumer:Lsun/security/ssl/HandshakeConsumer;
aload 1
aload 2
invokeinterface sun.security.ssl.HandshakeConsumer.consume:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
43: StackMap locals:
StackMap stack:
return
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 44 0 this Lsun/security/ssl/ServerHello$ServerHelloConsumer;
0 44 1 chc Lsun/security/ssl/ClientHandshakeContext;
0 44 2 serverHello Lsun/security/ssl/ServerHello$ServerHelloMessage;
3 44 3 extTypes [Lsun/security/ssl/SSLExtension;
11 12 4 serverVersion Lsun/security/ssl/ProtocolVersion;
13 44 4 serverVersion Lsun/security/ssl/ProtocolVersion;
8 44 5 svs Lsun/security/ssl/SupportedVersionsExtension$SHSupportedVersionsSpec;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
chc
serverHello
}
SourceFile: "ServerHello.java"
NestHost: sun.security.ssl.ServerHello
InnerClasses:
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
private final ServerHelloConsumer = sun.security.ssl.ServerHello$ServerHelloConsumer of sun.security.ssl.ServerHello
final ServerHelloMessage = sun.security.ssl.ServerHello$ServerHelloMessage of sun.security.ssl.ServerHello
final SHSupportedVersionsSpec = sun.security.ssl.SupportedVersionsExtension$SHSupportedVersionsSpec of sun.security.ssl.SupportedVersionsExtension