final class sun.security.ssl.AlpnExtension$AlpnSpec implements sun.security.ssl.SSLExtension$SSLExtensionSpec
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.AlpnExtension$AlpnSpec
super_class: java.lang.Object
{
final java.util.List<java.lang.String> applicationProtocols;
descriptor: Ljava/util/List;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/String;>;
private void <init>(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // sun.security.ssl.AlpnExtension$AlpnSpec this
start local 1 // java.lang.String[] applicationProtocols
0: .line 70
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 71
aload 0 /* this */
2: .line 72
aload 1 /* applicationProtocols */
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
3: .line 71
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
putfield sun.security.ssl.AlpnExtension$AlpnSpec.applicationProtocols:Ljava/util/List;
4: .line 73
return
end local 1 // java.lang.String[] applicationProtocols
end local 0 // sun.security.ssl.AlpnExtension$AlpnSpec this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/AlpnExtension$AlpnSpec;
0 5 1 applicationProtocols [Ljava/lang/String;
MethodParameters:
Name Flags
applicationProtocols
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=7, args_size=3
start local 0 // sun.security.ssl.AlpnExtension$AlpnSpec this
start local 1 // sun.security.ssl.HandshakeContext hc
start local 2 // java.nio.ByteBuffer buffer
0: .line 75
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 78
aload 2 /* buffer */
invokevirtual java.nio.ByteBuffer.remaining:()I
iconst_2
if_icmpge 9
2: .line 79
aload 1 /* hc */
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
3: .line 80
new javax.net.ssl.SSLProtocolException
dup
4: .line 81
new java.lang.StringBuilder
dup
ldc "Invalid application_layer_protocol_negotiation: insufficient data (length="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
5: .line 82
aload 2 /* buffer */
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
6: .line 81
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
7: .line 80
invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
8: .line 79
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
9: .line 85
StackMap locals: sun.security.ssl.AlpnExtension$AlpnSpec sun.security.ssl.HandshakeContext java.nio.ByteBuffer
StackMap stack:
aload 2 /* buffer */
invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
istore 3 /* listLen */
start local 3 // int listLen
10: .line 86
iload 3 /* listLen */
iconst_2
if_icmplt 11
iload 3 /* listLen */
aload 2 /* buffer */
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmpeq 18
11: .line 87
StackMap locals: int
StackMap stack:
aload 1 /* hc */
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
12: .line 88
new javax.net.ssl.SSLProtocolException
dup
13: .line 89
new java.lang.StringBuilder
dup
ldc "Invalid application_layer_protocol_negotiation: incorrect list length (length="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
14: .line 90
iload 3 /* listLen */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: .line 89
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: .line 88
invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
17: .line 87
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
18: .line 93
StackMap locals:
StackMap stack:
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 4 /* protocolNames */
start local 4 // java.util.List protocolNames
19: .line 94
goto 29
20: .line 96
StackMap locals: java.util.List
StackMap stack:
aload 2 /* buffer */
invokestatic sun.security.ssl.Record.getBytes8:(Ljava/nio/ByteBuffer;)[B
astore 5 /* bytes */
start local 5 // byte[] bytes
21: .line 97
aload 5 /* bytes */
arraylength
ifne 27
22: .line 98
aload 1 /* hc */
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
23: .line 99
new javax.net.ssl.SSLProtocolException
dup
24: .line 100
ldc "Invalid application_layer_protocol_negotiation extension: empty application protocol name"
25: .line 99
invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
26: .line 98
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
27: .line 104
StackMap locals: byte[]
StackMap stack:
new java.lang.String
dup
aload 5 /* bytes */
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
astore 6 /* appProtocol */
start local 6 // java.lang.String appProtocol
28: .line 105
aload 4 /* protocolNames */
aload 6 /* appProtocol */
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 6 // java.lang.String appProtocol
end local 5 // byte[] bytes
29: .line 94
StackMap locals:
StackMap stack:
aload 2 /* buffer */
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 20
30: .line 108
aload 0 /* this */
31: .line 109
aload 4 /* protocolNames */
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
32: .line 108
putfield sun.security.ssl.AlpnExtension$AlpnSpec.applicationProtocols:Ljava/util/List;
33: .line 110
return
end local 4 // java.util.List protocolNames
end local 3 // int listLen
end local 2 // java.nio.ByteBuffer buffer
end local 1 // sun.security.ssl.HandshakeContext hc
end local 0 // sun.security.ssl.AlpnExtension$AlpnSpec this
LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lsun/security/ssl/AlpnExtension$AlpnSpec;
0 34 1 hc Lsun/security/ssl/HandshakeContext;
0 34 2 buffer Ljava/nio/ByteBuffer;
10 34 3 listLen I
19 34 4 protocolNames Ljava/util/List<Ljava/lang/String;>;
21 29 5 bytes [B
28 29 6 appProtocol Ljava/lang/String;
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=1, locals=1, args_size=1
start local 0 // sun.security.ssl.AlpnExtension$AlpnSpec this
0: .line 114
aload 0 /* this */
getfield sun.security.ssl.AlpnExtension$AlpnSpec.applicationProtocols:Ljava/util/List;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
areturn
end local 0 // sun.security.ssl.AlpnExtension$AlpnSpec this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/AlpnExtension$AlpnSpec;
}
SourceFile: "AlpnExtension.java"
NestHost: sun.security.ssl.AlpnExtension
InnerClasses:
final AlpnSpec = sun.security.ssl.AlpnExtension$AlpnSpec of sun.security.ssl.AlpnExtension
abstract SSLExtensionSpec = sun.security.ssl.SSLExtension$SSLExtensionSpec of sun.security.ssl.SSLExtension