final class sun.security.ssl.AlpnExtension$CHAlpnProducer implements sun.security.ssl.HandshakeProducer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.AlpnExtension$CHAlpnProducer
super_class: java.lang.Object
{
static final int MAX_AP_LENGTH;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 255
static final int MAX_AP_LIST_LENGTH;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 65535
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/AlpnExtension$CHAlpnProducer;
public byte[] produce(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, 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.sslConfig:Lsun/security/ssl/SSLConfiguration;
getstatic sun.security.ssl.SSLExtension.CH_ALPN:Lsun/security/ssl/SSLExtension;
invokevirtual sun.security.ssl.SSLConfiguration.isAvailable:(Lsun/security/ssl/SSLExtension;)Z
ifne 10
2: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 7
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 7
3: new java.lang.StringBuilder
dup
ldc "Ignore client unavailable extension: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: getstatic sun.security.ssl.SSLExtension.CH_ALPN:Lsun/security/ssl/SSLExtension;
getfield sun.security.ssl.SSLExtension.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
5: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
6: invokestatic sun.security.ssl.SSLLogger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
7: StackMap locals: sun.security.ssl.ClientHandshakeContext
StackMap stack:
aload 3
ldc ""
putfield sun.security.ssl.ClientHandshakeContext.applicationProtocol:Ljava/lang/String;
8: aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
ldc ""
putfield sun.security.ssl.TransportContext.applicationProtocol:Ljava/lang/String;
9: aconst_null
areturn
10: StackMap locals:
StackMap stack:
aload 3
getfield sun.security.ssl.ClientHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.applicationProtocols:[Ljava/lang/String;
astore 4
start local 4 11: aload 4
ifnull 12
aload 4
arraylength
ifne 16
12: StackMap locals: java.lang.String[]
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 15
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 15
13: ldc "No available application protocols"
iconst_0
anewarray java.lang.Object
14: invokestatic sun.security.ssl.SSLLogger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
15: StackMap locals:
StackMap stack:
aconst_null
areturn
16: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 17: aload 4
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 58
StackMap locals: sun.security.ssl.AlpnExtension$CHAlpnProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHandshakeContext java.lang.String[] int top int int java.lang.String[]
StackMap stack:
18: aload 9
iload 7
aaload
astore 6
start local 6 19: aload 6
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
arraylength
istore 10
start local 10 20: iload 10
ifne 27
21: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 24
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 24
22: ldc "Application protocol name cannot be empty"
iconst_0
anewarray java.lang.Object
23: invokestatic sun.security.ssl.SSLLogger.severe:(Ljava/lang/String;[Ljava/lang/Object;)V
24: StackMap locals: sun.security.ssl.AlpnExtension$CHAlpnProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHandshakeContext java.lang.String[] int java.lang.String int int java.lang.String[] int
StackMap stack:
aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
25: ldc "Application protocol name cannot be empty"
26: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
27: StackMap locals:
StackMap stack:
iload 10
sipush 255
if_icmpgt 30
28: iload 5
iload 10
iconst_1
iadd
iadd
istore 5
29: goto 42
30: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 36
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 36
31: new java.lang.StringBuilder
dup
ldc "Application protocol name ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
32: ldc ") exceeds the size limit ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: sipush 255
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
34: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
35: invokestatic sun.security.ssl.SSLLogger.severe:(Ljava/lang/String;[Ljava/lang/Object;)V
36: StackMap locals:
StackMap stack:
aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
37: new java.lang.StringBuilder
dup
ldc "Application protocol name ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
38: ldc ") exceeds the size limit ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
39: sipush 255
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
40: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
41: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
42: StackMap locals:
StackMap stack:
iload 5
ldc 65535
if_icmple 57
43: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 50
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 50
44: new java.lang.StringBuilder
dup
ldc "The configured application protocols ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
45: aload 4
invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
46: ldc ") exceed the size limit ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
47: ldc 65535
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
48: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
49: invokestatic sun.security.ssl.SSLLogger.severe:(Ljava/lang/String;[Ljava/lang/Object;)V
50: StackMap locals:
StackMap stack:
aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
51: new java.lang.StringBuilder
dup
ldc "The configured application protocols ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
52: aload 4
invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
53: ldc ") exceed the size limit ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
54: ldc 65535
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
55: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
56: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
end local 10 end local 6 57: StackMap locals: sun.security.ssl.AlpnExtension$CHAlpnProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHandshakeContext java.lang.String[] int top int int java.lang.String[]
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
58: iload 7
iload 8
if_icmplt 18
59: iload 5
iconst_2
iadd
newarray 8
astore 6
start local 6 60: aload 6
invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
astore 7
start local 7 61: aload 7
iload 5
invokestatic sun.security.ssl.Record.putInt16:(Ljava/nio/ByteBuffer;I)V
62: aload 4
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 66
StackMap locals: sun.security.ssl.AlpnExtension$CHAlpnProducer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHandshakeContext java.lang.String[] int byte[] java.nio.ByteBuffer top int int java.lang.String[]
StackMap stack:
63: aload 11
iload 9
aaload
astore 8
start local 8 64: aload 7
aload 8
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokestatic sun.security.ssl.Record.putBytes8:(Ljava/nio/ByteBuffer;[B)V
end local 8 65: iinc 9 1
StackMap locals:
StackMap stack:
66: iload 9
iload 10
if_icmplt 63
67: aload 3
getfield sun.security.ssl.ClientHandshakeContext.handshakeExtensions:Ljava/util/Map;
getstatic sun.security.ssl.SSLExtension.CH_ALPN:Lsun/security/ssl/SSLExtension;
68: new sun.security.ssl.AlpnExtension$AlpnSpec
dup
aload 3
getfield sun.security.ssl.ClientHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.applicationProtocols:[Ljava/lang/String;
invokespecial sun.security.ssl.AlpnExtension$AlpnSpec.<init>:([Ljava/lang/String;)V
69: invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
70: aload 6
areturn
end local 7 end local 6 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 71 0 this Lsun/security/ssl/AlpnExtension$CHAlpnProducer;
0 71 1 context Lsun/security/ssl/ConnectionContext;
0 71 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
1 71 3 chc Lsun/security/ssl/ClientHandshakeContext;
11 71 4 laps [Ljava/lang/String;
17 71 5 listLength I
19 57 6 ap Ljava/lang/String;
20 57 10 length I
60 71 6 extData [B
61 71 7 m Ljava/nio/ByteBuffer;
64 65 8 ap Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
}
SourceFile: "AlpnExtension.java"
NestHost: sun.security.ssl.AlpnExtension
InnerClasses:
final AlpnSpec = sun.security.ssl.AlpnExtension$AlpnSpec of sun.security.ssl.AlpnExtension
private final CHAlpnProducer = sun.security.ssl.AlpnExtension$CHAlpnProducer of sun.security.ssl.AlpnExtension
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake