final class sun.security.ssl.ServerNameExtension$CHServerNamesSpec implements sun.security.ssl.SSLExtension$SSLExtensionSpec
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.ServerNameExtension$CHServerNamesSpec
super_class: java.lang.Object
{
static final int ;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 3
final java.util.List<javax.net.ssl.SNIServerName> serverNames;
descriptor: Ljava/util/List;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/List<Ljavax/net/ssl/SNIServerName;>;
private void <init>(java.util.List<javax.net.ssl.SNIServerName>);
descriptor: (Ljava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new java.util.ArrayList
dup
aload 1
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
3: invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
putfield sun.security.ssl.ServerNameExtension$CHServerNamesSpec.serverNames:Ljava/util/List;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/ServerNameExtension$CHServerNamesSpec;
0 5 1 serverNames Ljava/util/List<Ljavax/net/ssl/SNIServerName;>;
Signature: (Ljava/util/List<Ljavax/net/ssl/SNIServerName;>;)V
MethodParameters:
Name Flags
serverNames
private void <init>(sun.security.ssl.HandshakeContext, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
iconst_2
if_icmpge 7
2: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
3: new javax.net.ssl.SSLProtocolException
dup
4: ldc "Invalid server_name extension: insufficient data"
5: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
6: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
7: StackMap locals: sun.security.ssl.ServerNameExtension$CHServerNamesSpec sun.security.ssl.HandshakeContext java.nio.ByteBuffer
StackMap stack:
aload 2
invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
istore 3
start local 3 8: iload 3
ifeq 9
iload 3
aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmpeq 14
9: StackMap locals: int
StackMap stack:
aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
10: new javax.net.ssl.SSLProtocolException
dup
11: ldc "Invalid server_name extension: incomplete data"
12: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
13: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
14: StackMap locals:
StackMap stack:
new java.util.LinkedHashMap
dup
invokespecial java.util.LinkedHashMap.<init>:()V
astore 4
start local 4 15: goto 59
16: StackMap locals: java.util.Map
StackMap stack:
aload 2
invokestatic sun.security.ssl.Record.getInt8:(Ljava/nio/ByteBuffer;)I
istore 5
start local 5 17: aload 2
invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
astore 7
start local 7 18: iload 5
ifne 39
19: aload 7
arraylength
ifne 25
20: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
21: new javax.net.ssl.SSLProtocolException
dup
22: ldc "Empty HostName in server_name extension"
23: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
24: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
25: StackMap locals: sun.security.ssl.ServerNameExtension$CHServerNamesSpec sun.security.ssl.HandshakeContext java.nio.ByteBuffer int java.util.Map int top byte[]
StackMap stack:
new javax.net.ssl.SNIHostName
dup
aload 7
invokespecial javax.net.ssl.SNIHostName.<init>:([B)V
astore 6
start local 6 26: goto 51
end local 6 StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
27: astore 8
start local 8 28: new javax.net.ssl.SSLProtocolException
dup
29: new java.lang.StringBuilder
dup
ldc "Illegal server name, type=host_name("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
30: iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "), name="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
31: new java.lang.String
dup
aload 7
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
32: ldc ", value={"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: aload 7
invokestatic sun.security.ssl.Utilities.toHexString:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "}"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
34: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
35: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
astore 9
start local 9 36: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
37: aload 9
aload 8
invokevirtual javax.net.ssl.SSLProtocolException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
checkcast javax.net.ssl.SSLProtocolException
38: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 9 end local 8 39: StackMap locals:
StackMap stack:
new sun.security.ssl.ServerNameExtension$CHServerNamesSpec$UnknownServerName
dup
iload 5
aload 7
invokespecial sun.security.ssl.ServerNameExtension$CHServerNamesSpec$UnknownServerName.<init>:(I[B)V
astore 6
start local 6 40: goto 51
end local 6 StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
41: astore 8
start local 8 42: new javax.net.ssl.SSLProtocolException
dup
43: new java.lang.StringBuilder
dup
ldc "Illegal server name, type=("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
44: ldc "), value={"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
45: aload 7
invokestatic sun.security.ssl.Utilities.toHexString:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "}"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
46: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
47: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
astore 9
start local 9 48: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
49: aload 9
aload 8
invokevirtual javax.net.ssl.SSLProtocolException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
checkcast javax.net.ssl.SSLProtocolException
50: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 9 end local 8 start local 6 51: StackMap locals: sun.security.ssl.ServerNameExtension$CHServerNamesSpec sun.security.ssl.HandshakeContext java.nio.ByteBuffer int java.util.Map int javax.net.ssl.SNIServerName byte[]
StackMap stack:
aload 4
aload 6
invokevirtual javax.net.ssl.SNIServerName.getType:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
ifnull 59
52: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
53: new javax.net.ssl.SSLProtocolException
dup
54: new java.lang.StringBuilder
dup
ldc "Duplicated server name of type "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
55: aload 6
invokevirtual javax.net.ssl.SNIServerName.getType:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
56: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
57: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
58: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 7 end local 6 end local 5 59: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 16
60: aload 0
new java.util.ArrayList
dup
aload 4
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
putfield sun.security.ssl.ServerNameExtension$CHServerNamesSpec.serverNames:Ljava/util/List;
61: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 62 0 this Lsun/security/ssl/ServerNameExtension$CHServerNamesSpec;
0 62 1 hc Lsun/security/ssl/HandshakeContext;
0 62 2 buffer Ljava/nio/ByteBuffer;
8 62 3 sniLen I
15 62 4 sniMap Ljava/util/Map<Ljava/lang/Integer;Ljavax/net/ssl/SNIServerName;>;
17 59 5 nameType I
26 27 6 serverName Ljavax/net/ssl/SNIServerName;
40 41 6 serverName Ljavax/net/ssl/SNIServerName;
51 59 6 serverName Ljavax/net/ssl/SNIServerName;
18 59 7 encoded [B
28 39 8 iae Ljava/lang/IllegalArgumentException;
36 39 9 spe Ljavax/net/ssl/SSLProtocolException;
42 51 8 iae Ljava/lang/IllegalArgumentException;
48 51 9 spe Ljavax/net/ssl/SSLProtocolException;
Exception table:
from to target type
25 26 27 Class java.lang.IllegalArgumentException
39 40 41 Class java.lang.IllegalArgumentException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
hc
buffer
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.ServerNameExtension$CHServerNamesSpec.serverNames:Ljava/util/List;
ifnull 1
aload 0
getfield sun.security.ssl.ServerNameExtension$CHServerNamesSpec.serverNames:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 2
1: StackMap locals:
StackMap stack:
ldc "<no server name indicator specified>"
areturn
2: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
sipush 512
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 1
start local 1 3: aload 0
getfield sun.security.ssl.ServerNameExtension$CHServerNamesSpec.serverNames:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 7
StackMap locals: sun.security.ssl.ServerNameExtension$CHServerNamesSpec java.lang.StringBuilder top java.util.Iterator
StackMap stack:
4: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.net.ssl.SNIServerName
astore 2
start local 2 5: aload 1
aload 2
invokevirtual javax.net.ssl.SNIServerName.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
6: aload 1
ldc "\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 2 7: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
8: aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/ssl/ServerNameExtension$CHServerNamesSpec;
3 9 1 builder Ljava/lang/StringBuilder;
5 7 2 sn Ljavax/net/ssl/SNIServerName;
}
SourceFile: "ServerNameExtension.java"
NestHost: sun.security.ssl.ServerNameExtension
InnerClasses:
abstract SSLExtensionSpec = sun.security.ssl.SSLExtension$SSLExtensionSpec of sun.security.ssl.SSLExtension
final CHServerNamesSpec = sun.security.ssl.ServerNameExtension$CHServerNamesSpec of sun.security.ssl.ServerNameExtension
private UnknownServerName = sun.security.ssl.ServerNameExtension$CHServerNamesSpec$UnknownServerName of sun.security.ssl.ServerNameExtension$CHServerNamesSpec