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>(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=9, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
iconst_2
if_icmpge 5
2: new javax.net.ssl.SSLProtocolException
dup
3: ldc "Invalid server_name extension: insufficient data"
4: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: sun.security.ssl.ServerNameExtension$CHServerNamesSpec java.nio.ByteBuffer
StackMap stack:
aload 1
invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
istore 2
start local 2 6: iload 2
ifeq 7
iload 2
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmpeq 10
7: StackMap locals: int
StackMap stack:
new javax.net.ssl.SSLProtocolException
dup
8: ldc "Invalid server_name extension: incomplete data"
9: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
new java.util.LinkedHashMap
dup
invokespecial java.util.LinkedHashMap.<init>:()V
astore 3
start local 3 11: goto 47
12: StackMap locals: java.util.Map
StackMap stack:
aload 1
invokestatic sun.security.ssl.Record.getInt8:(Ljava/nio/ByteBuffer;)I
istore 4
start local 4 13: aload 1
invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
astore 6
start local 6 14: iload 4
ifne 31
15: aload 6
arraylength
ifne 19
16: new javax.net.ssl.SSLProtocolException
dup
17: ldc "Empty HostName in server_name extension"
18: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals: sun.security.ssl.ServerNameExtension$CHServerNamesSpec java.nio.ByteBuffer int java.util.Map int top byte[]
StackMap stack:
new javax.net.ssl.SNIHostName
dup
aload 6
invokespecial javax.net.ssl.SNIHostName.<init>:([B)V
astore 5
start local 5 20: goto 41
end local 5 StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
21: astore 7
start local 7 22: new javax.net.ssl.SSLProtocolException
dup
23: new java.lang.StringBuilder
dup
ldc "Illegal server name, type=host_name("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
24: iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "), name="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
25: new java.lang.String
dup
aload 6
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;
26: ldc ", value={"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27: aload 6
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;
28: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
29: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
astore 8
start local 8 30: aload 8
aload 7
invokevirtual javax.net.ssl.SSLProtocolException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
checkcast javax.net.ssl.SSLProtocolException
athrow
end local 8 end local 7 31: StackMap locals:
StackMap stack:
new sun.security.ssl.ServerNameExtension$CHServerNamesSpec$UnknownServerName
dup
iload 4
aload 6
invokespecial sun.security.ssl.ServerNameExtension$CHServerNamesSpec$UnknownServerName.<init>:(I[B)V
astore 5
start local 5 32: goto 41
end local 5 StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
33: astore 7
start local 7 34: new javax.net.ssl.SSLProtocolException
dup
35: new java.lang.StringBuilder
dup
ldc "Illegal server name, type=("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
36: ldc "), value={"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
37: aload 6
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;
38: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
39: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
astore 8
start local 8 40: aload 8
aload 7
invokevirtual javax.net.ssl.SSLProtocolException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
checkcast javax.net.ssl.SSLProtocolException
athrow
end local 8 end local 7 start local 5 41: StackMap locals: sun.security.ssl.ServerNameExtension$CHServerNamesSpec java.nio.ByteBuffer int java.util.Map int javax.net.ssl.SNIServerName byte[]
StackMap stack:
aload 3
aload 5
invokevirtual javax.net.ssl.SNIServerName.getType:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 5
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
ifnull 47
42: new javax.net.ssl.SSLProtocolException
dup
43: new java.lang.StringBuilder
dup
ldc "Duplicated server name of type "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
44: aload 5
invokevirtual javax.net.ssl.SNIServerName.getType:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
45: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
46: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
end local 6 end local 5 end local 4 47: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 12
48: aload 0
new java.util.ArrayList
dup
aload 3
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;
49: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 50 0 this Lsun/security/ssl/ServerNameExtension$CHServerNamesSpec;
0 50 1 buffer Ljava/nio/ByteBuffer;
6 50 2 sniLen I
11 50 3 sniMap Ljava/util/Map<Ljava/lang/Integer;Ljavax/net/ssl/SNIServerName;>;
13 47 4 nameType I
20 21 5 serverName Ljavax/net/ssl/SNIServerName;
32 33 5 serverName Ljavax/net/ssl/SNIServerName;
41 47 5 serverName Ljavax/net/ssl/SNIServerName;
14 47 6 encoded [B
22 31 7 iae Ljava/lang/IllegalArgumentException;
30 31 8 spe Ljavax/net/ssl/SSLProtocolException;
34 41 7 iae Ljava/lang/IllegalArgumentException;
40 41 8 spe Ljavax/net/ssl/SSLProtocolException;
Exception table:
from to target type
19 20 21 Class java.lang.IllegalArgumentException
31 32 33 Class java.lang.IllegalArgumentException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
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