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.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
4: ldc "No more message expected before ServerHello is processed"
5: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
6: StackMap locals: sun.security.ssl.ClientHandshakeContext
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 7: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 9
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 9
8: 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
9: 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 12
10: aload 0
aload 3
aload 4
invokevirtual sun.security.ssl.ServerHello$ServerHelloConsumer.onHelloRetryRequest:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/ServerHello$ServerHelloMessage;)V
11: goto 13
12: 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
13: 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 14 0 this Lsun/security/ssl/ServerHello$ServerHelloConsumer;
0 14 1 context Lsun/security/ssl/ConnectionContext;
0 14 2 message Ljava/nio/ByteBuffer;
1 14 3 chc Lsun/security/ssl/ClientHandshakeContext;
7 14 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: 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
30: 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 31 0 this Lsun/security/ssl/ServerHello$ServerHelloConsumer;
0 31 1 chc Lsun/security/ssl/ClientHandshakeContext;
0 31 2 helloRetryRequest Lsun/security/ssl/ServerHello$ServerHelloMessage;
3 31 3 extTypes [Lsun/security/ssl/SSLExtension;
11 12 4 serverVersion Lsun/security/ssl/ProtocolVersion;
13 31 4 serverVersion Lsun/security/ssl/ProtocolVersion;
8 31 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
invokevirtual sun.security.ssl.ProtocolVersion.useTLS13PlusSpec:()Z
ifeq 34
32: 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
33: goto 36
34: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakePossessions:Ljava/util/List;
invokeinterface java.util.List.clear:()V
35: 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
36: 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 37 0 this Lsun/security/ssl/ServerHello$ServerHelloConsumer;
0 37 1 chc Lsun/security/ssl/ClientHandshakeContext;
0 37 2 serverHello Lsun/security/ssl/ServerHello$ServerHelloMessage;
3 37 3 extTypes [Lsun/security/ssl/SSLExtension;
11 12 4 serverVersion Lsun/security/ssl/ProtocolVersion;
13 37 4 serverVersion Lsun/security/ssl/ProtocolVersion;
8 37 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