public class
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.tomcat.util.net.TLSClientHelloExtractor
super_class: java.lang.Object
{
private static final org.apache.juli.logging.Log ;
descriptor: Lorg/apache/juli/logging/Log;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.apache.tomcat.util.res.StringManager ;
descriptor: Lorg/apache/tomcat/util/res/StringManager;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult ;
descriptor: Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.List<org.apache.tomcat.util.net.openssl.ciphers.Cipher> ;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;>;
private final java.lang.String ;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.List<java.lang.String> ;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/String;>;
private static final int ;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 5
private static final int ;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int ;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16
public static byte[] ;
descriptor: [B
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
static void ();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
putstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.log:Lorg/apache/juli/logging/Log;
1: ldc Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
putstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.sm:Lorg/apache/tomcat/util/res/StringManager;
2: ldc "HTTP/1.1 400 \r\nContent-Type: text/plain;charset=UTF-8\r\nConnection: close\r\n\r\nBad Request\r\nThis combination of host and port requires TLS.\r\n"
3: getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
4: putstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.USE_TLS_RESPONSE:[B
5: return
LocalVariableTable:
Start End Slot Name Signature
public void (java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=12, 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.position:()I
istore 2
start local 2 2: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 3
start local 3 3: getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NOT_PRESENT:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
astore 4
start local 4 4: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 5
start local 5 5: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 6
start local 6 6: aconst_null
astore 7
start local 7 7: aload 1
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
8: aload 1
iconst_5
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isAvailable:(Ljava/nio/ByteBuffer;I)Z
ifne 17
9: aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.handleIncompleteRead:(Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
astore 4
10: aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
11: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
12: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
13: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
14: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
15: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
16: return
17: StackMap locals: org.apache.tomcat.util.net.TLSClientHelloExtractor java.nio.ByteBuffer int int org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult java.util.List java.util.List java.lang.String
StackMap stack:
aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isTLSHandshake:(Ljava/nio/ByteBuffer;)Z
ifne 27
18: aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isHttp:(Ljava/nio/ByteBuffer;)Z
ifeq 20
19: getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NON_SECURE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
astore 4
20: StackMap locals:
StackMap stack:
aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
21: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
22: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
23: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
24: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
25: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
26: return
27: StackMap locals:
StackMap stack:
aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isAllRecordAvailable:(Ljava/nio/ByteBuffer;)Z
ifne 36
28: aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.handleIncompleteRead:(Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
astore 4
29: aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
30: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
31: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
32: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
33: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
34: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
35: return
36: StackMap locals:
StackMap stack:
aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isClientHello:(Ljava/nio/ByteBuffer;)Z
ifne 44
37: aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
38: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
39: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
40: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
41: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
42: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
43: return
44: StackMap locals:
StackMap stack:
aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isAllClientHelloAvailable:(Ljava/nio/ByteBuffer;)Z
ifne 53
45: getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "sniExtractor.clientHelloTooBig"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
46: aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
47: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
48: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
49: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
50: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
51: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
52: return
53: StackMap locals:
StackMap stack:
aload 1
iconst_2
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.skipBytes:(Ljava/nio/ByteBuffer;I)V
54: aload 1
bipush 32
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.skipBytes:(Ljava/nio/ByteBuffer;I)V
55: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.skipBytes:(Ljava/nio/ByteBuffer;I)V
56: aload 1
invokevirtual java.nio.ByteBuffer.getChar:()C
iconst_2
idiv
istore 8
start local 8 57: iconst_0
istore 9
start local 9 58: goto 62
59: StackMap locals: int int
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.getChar:()C
istore 10
start local 10 60: aload 5
iload 10
invokestatic org.apache.tomcat.util.net.openssl.ciphers.Cipher.valueOf:(I)Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 10 61: iinc 9 1
StackMap locals:
StackMap stack:
62: iload 9
iload 8
if_icmplt 59
end local 9 63: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.skipBytes:(Ljava/nio/ByteBuffer;I)V
64: aload 1
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 72
65: aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
66: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
67: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
68: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
69: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
70: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
71: return
72: StackMap locals:
StackMap stack:
aload 1
iconst_2
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.skipBytes:(Ljava/nio/ByteBuffer;I)V
73: goto 82
74: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.getChar:()C
istore 9
start local 9 75: aload 1
invokevirtual java.nio.ByteBuffer.getChar:()C
istore 10
start local 10 76: iload 9
lookupswitch { // 2
0: 77
16: 79
default: 81
}
77: StackMap locals: int int
StackMap stack:
aload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.readSniExtension:(Ljava/nio/ByteBuffer;)Ljava/lang/String;
astore 7
78: goto 82
79: StackMap locals:
StackMap stack:
aload 1
aload 6
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.readAlpnExtension:(Ljava/nio/ByteBuffer;Ljava/util/List;)V
80: goto 82
81: StackMap locals:
StackMap stack:
aload 1
iload 10
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.skipBytes:(Ljava/nio/ByteBuffer;I)V
end local 10 end local 9 82: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifeq 84
83: aload 7
ifnull 74
aload 6
invokeinterface java.util.List.size:()I
ifeq 74
84: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.COMPLETE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
astore 4
end local 8 85: goto 96
StackMap locals: org.apache.tomcat.util.net.TLSClientHelloExtractor java.nio.ByteBuffer int int org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult java.util.List java.util.List java.lang.String
StackMap stack: java.lang.RuntimeException
86: astore 8
start local 8 87: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "sniExtractor.clientHelloInvalid"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
aload 8
invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 8 88: StackMap locals:
StackMap stack: java.lang.Throwable
astore 11
89: aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
90: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
91: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
92: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
93: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
94: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
95: aload 11
athrow
96: StackMap locals:
StackMap stack:
aload 0
aload 4
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
97: aload 0
aload 5
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
98: aload 0
aload 6
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
99: aload 0
aload 7
putfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
100: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
101: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
102: return
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 103 0 this Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
0 103 1 netInBuffer Ljava/nio/ByteBuffer;
2 103 2 pos I
3 103 3 limit I
4 103 4 result Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
5 103 5 clientRequestedCiphers Ljava/util/List<Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;>;
6 103 6 clientRequestedApplicationProtocols Ljava/util/List<Ljava/lang/String;>;
7 103 7 sniValue Ljava/lang/String;
57 85 8 cipherCount I
58 63 9 i I
60 61 10 cipherId I
75 82 9 extensionType C
76 82 10 extensionDataSize C
87 88 8 e Ljava/lang/RuntimeException;
Exception table:
from to target type
7 10 86 Class java.nio.BufferUnderflowException
17 20 86 Class java.nio.BufferUnderflowException
27 29 86 Class java.nio.BufferUnderflowException
36 37 86 Class java.nio.BufferUnderflowException
44 46 86 Class java.nio.BufferUnderflowException
53 65 86 Class java.nio.BufferUnderflowException
72 85 86 Class java.nio.BufferUnderflowException
7 10 86 Class java.lang.IllegalArgumentException
17 20 86 Class java.lang.IllegalArgumentException
27 29 86 Class java.lang.IllegalArgumentException
36 37 86 Class java.lang.IllegalArgumentException
44 46 86 Class java.lang.IllegalArgumentException
53 65 86 Class java.lang.IllegalArgumentException
72 85 86 Class java.lang.IllegalArgumentException
7 10 88 any
17 20 88 any
27 29 88 any
36 37 88 any
44 46 88 any
53 65 88 any
72 88 88 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
netInBuffer
public org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult ();
descriptor: ()Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
public java.lang.String ();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.COMPLETE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
if_acmpne 2
1: aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.sniValue:Ljava/lang/String;
areturn
2: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
invokespecial java.lang.IllegalStateException.<init>:()V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
public java.util.List<org.apache.tomcat.util.net.openssl.ciphers.Cipher> getClientRequestedCiphers();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.COMPLETE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
if_acmpeq 1
aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NOT_PRESENT:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
if_acmpne 2
1: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedCiphers:Ljava/util/List;
areturn
2: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
invokespecial java.lang.IllegalStateException.<init>:()V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
Signature: ()Ljava/util/List<Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;>;
public java.util.List<java.lang.String> getClientRequestedApplicationProtocols();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.COMPLETE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
if_acmpeq 1
aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.result:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NOT_PRESENT:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
if_acmpne 2
1: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.TLSClientHelloExtractor.clientRequestedApplicationProtocols:Ljava/util/List;
areturn
2: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
invokespecial java.lang.IllegalStateException.<init>:()V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
Signature: ()Ljava/util/List<Ljava/lang/String;>;
private static org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult handleIncompleteRead(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.nio.ByteBuffer.limit:()I
aload 0
invokevirtual java.nio.ByteBuffer.capacity:()I
if_icmpne 2
1: getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.UNDERFLOW:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
areturn
2: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NEED_READ:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 bb Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
bb
private static boolean (java.nio.ByteBuffer, int);
descriptor: (Ljava/nio/ByteBuffer;I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.nio.ByteBuffer.remaining:()I
iload 1
if_icmpge 3
1: aload 0
aload 0
invokevirtual java.nio.ByteBuffer.limit:()I
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 bb Ljava/nio/ByteBuffer;
0 4 1 size I
MethodParameters:
Name Flags
bb
size
private static boolean isTLSHandshake(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual java.nio.ByteBuffer.get:()B
bipush 22
if_icmpeq 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 1
start local 1 3: aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 2
start local 2 4: iload 1
iconst_3
if_icmplt 5
iload 1
iconst_3
if_icmpne 6
iload 2
ifne 6
5: StackMap locals: int int
StackMap stack:
iconst_0
ireturn
6: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 bb Ljava/nio/ByteBuffer;
3 7 1 b2 B
4 7 2 b3 B
MethodParameters:
Name Flags
bb
private static boolean (java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: aload 0
iconst_0
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
2: StackMap locals: int
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 4
3: iconst_0
ireturn
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 1
5: iload 1
bipush 13
if_icmpeq 2
iload 1
bipush 10
if_icmpeq 2
6: StackMap locals:
StackMap stack:
iload 1
invokestatic org.apache.tomcat.util.http.parser.HttpParser.isToken:(I)Z
ifeq 7
aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 8
7: StackMap locals:
StackMap stack:
iconst_0
ireturn
8: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 1
9: iload 1
bipush 32
if_icmpeq 14
iload 1
bipush 9
if_icmpne 6
10: goto 14
11: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 13
12: iconst_0
ireturn
13: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 1
14: StackMap locals:
StackMap stack:
iload 1
bipush 32
if_icmpeq 11
iload 1
bipush 9
if_icmpeq 11
15: goto 19
16: StackMap locals:
StackMap stack:
iload 1
invokestatic org.apache.tomcat.util.http.parser.HttpParser.isNotRequestTarget:(I)Z
ifne 17
aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 18
17: StackMap locals:
StackMap stack:
iconst_0
ireturn
18: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 1
19: StackMap locals:
StackMap stack:
iload 1
bipush 32
if_icmpeq 24
iload 1
bipush 9
if_icmpne 16
20: goto 24
21: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 23
22: iconst_0
ireturn
23: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 1
24: StackMap locals:
StackMap stack:
iload 1
bipush 32
if_icmpeq 21
iload 1
bipush 9
if_icmpeq 21
25: StackMap locals:
StackMap stack:
iload 1
invokestatic org.apache.tomcat.util.http.parser.HttpParser.isHttpProtocol:(I)Z
ifeq 26
aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 27
26: StackMap locals:
StackMap stack:
iconst_0
ireturn
27: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
istore 1
28: iload 1
bipush 13
if_icmpeq 29
iload 1
bipush 10
if_icmpne 25
29: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 bb Ljava/nio/ByteBuffer;
1 30 1 chr B
MethodParameters:
Name Flags
bb
private static boolean (java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual java.nio.ByteBuffer.getChar:()C
istore 1
start local 1 1: aload 0
iload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isAvailable:(Ljava/nio/ByteBuffer;I)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 bb Ljava/nio/ByteBuffer;
1 2 1 size I
MethodParameters:
Name Flags
bb
private static boolean (java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.nio.ByteBuffer.get:()B
iconst_1
if_icmpne 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 bb Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
bb
private static boolean (java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 16
ishl
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 8
ishl
iadd
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
iadd
istore 1
start local 1 1: aload 0
iload 1
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.isAvailable:(Ljava/nio/ByteBuffer;I)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 bb Ljava/nio/ByteBuffer;
1 2 1 size I
MethodParameters:
Name Flags
bb
private static void (java.nio.ByteBuffer, int);
descriptor: (Ljava/nio/ByteBuffer;I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
invokevirtual java.nio.ByteBuffer.position:()I
iload 1
iadd
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 bb Ljava/nio/ByteBuffer;
0 2 1 size I
MethodParameters:
Name Flags
bb
size
private static java.lang.String (java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
iconst_3
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor.skipBytes:(Ljava/nio/ByteBuffer;I)V
1: aload 0
invokevirtual java.nio.ByteBuffer.getChar:()C
istore 1
start local 1 2: iload 1
newarray 8
astore 2
start local 2 3: aload 0
aload 2
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
4: new java.lang.String
dup
aload 2
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 bb Ljava/nio/ByteBuffer;
2 5 1 serverNameSize C
3 5 2 serverNameBytes [B
MethodParameters:
Name Flags
bb
private static void readAlpnExtension(java.nio.ByteBuffer, java.util.List<java.lang.String>);
descriptor: (Ljava/nio/ByteBuffer;Ljava/util/List;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.nio.ByteBuffer.getChar:()C
istore 2
start local 2 1: sipush 255
newarray 8
astore 3
start local 3 2: goto 8
3: StackMap locals: int byte[]
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
istore 4
start local 4 4: aload 0
aload 3
iconst_0
iload 4
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
5: aload 1
new java.lang.String
dup
aload 3
iconst_0
iload 4
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BIILjava/nio/charset/Charset;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
6: iload 2
iconst_1
isub
i2c
istore 2
7: iload 2
iload 4
isub
i2c
istore 2
end local 4 8: StackMap locals:
StackMap stack:
iload 2
ifgt 3
9: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 bb Ljava/nio/ByteBuffer;
0 10 1 protocolNames Ljava/util/List<Ljava/lang/String;>;
1 10 2 toRead C
2 10 3 inputBuffer [B
4 8 4 len I
Signature: (Ljava/nio/ByteBuffer;Ljava/util/List<Ljava/lang/String;>;)V
MethodParameters:
Name Flags
bb
protocolNames
}
SourceFile: "TLSClientHelloExtractor.java"
NestMembers:
org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult
InnerClasses:
public final ExtractorResult = org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult of org.apache.tomcat.util.net.TLSClientHelloExtractor