final class sun.security.ssl.AlpnExtension$SHAlpnProducer implements sun.security.ssl.HandshakeProducer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.AlpnExtension$SHAlpnProducer
super_class: java.lang.Object
{
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // sun.security.ssl.AlpnExtension$SHAlpnProducer this
0: .line 348
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 350
return
end local 0 // sun.security.ssl.AlpnExtension$SHAlpnProducer this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/AlpnExtension$SHAlpnProducer;
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=4, locals=9, args_size=3
start local 0 // sun.security.ssl.AlpnExtension$SHAlpnProducer this
start local 1 // sun.security.ssl.ConnectionContext context
start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
0: .line 356
aload 1 /* context */
checkcast sun.security.ssl.ServerHandshakeContext
astore 3 /* shc */
start local 3 // sun.security.ssl.ServerHandshakeContext shc
1: .line 360
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.handshakeExtensions:Ljava/util/Map;
getstatic sun.security.ssl.SSLExtension.CH_ALPN:Lsun/security/ssl/SSLExtension;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.ssl.AlpnExtension$AlpnSpec
2: .line 359
astore 4 /* requestedAlps */
start local 4 // sun.security.ssl.AlpnExtension$AlpnSpec requestedAlps
3: .line 361
aload 4 /* requestedAlps */
ifnonnull 12
4: .line 363
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 9
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 9
5: .line 365
new java.lang.StringBuilder
dup
ldc "Ignore unavailable extension: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
6: .line 366
getstatic sun.security.ssl.SSLExtension.SH_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;
7: .line 365
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
8: .line 364
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
9: .line 369
StackMap locals: sun.security.ssl.ServerHandshakeContext sun.security.ssl.AlpnExtension$AlpnSpec
StackMap stack:
aload 3 /* shc */
ldc ""
putfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
10: .line 370
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
ldc ""
putfield sun.security.ssl.TransportContext.applicationProtocol:Ljava/lang/String;
11: .line 371
aconst_null
areturn
12: .line 374
StackMap locals:
StackMap stack:
aload 4 /* requestedAlps */
getfield sun.security.ssl.AlpnExtension$AlpnSpec.applicationProtocols:Ljava/util/List;
astore 5 /* alps */
start local 5 // java.util.List alps
13: .line 375
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
instanceof javax.net.ssl.SSLEngine
ifeq 26
14: .line 376
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.engineAPSelector:Ljava/util/function/BiFunction;
ifnull 38
15: .line 377
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
checkcast javax.net.ssl.SSLEngine
astore 6 /* engine */
start local 6 // javax.net.ssl.SSLEngine engine
16: .line 378
aload 3 /* shc */
17: .line 379
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.engineAPSelector:Ljava/util/function/BiFunction;
aload 6 /* engine */
aload 5 /* alps */
invokeinterface java.util.function.BiFunction.apply:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
18: .line 378
putfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
19: .line 380
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
ifnull 22
20: .line 381
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
invokevirtual java.lang.String.isEmpty:()Z
ifne 38
21: .line 382
aload 5 /* alps */
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 38
22: .line 383
StackMap locals: java.util.List javax.net.ssl.SSLEngine
StackMap stack:
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
23: .line 384
getstatic sun.security.ssl.Alert.NO_APPLICATION_PROTOCOL:Lsun/security/ssl/Alert;
24: .line 385
ldc "No matching application layer protocol values"
25: .line 383
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
end local 6 // javax.net.ssl.SSLEngine engine
26: .line 389
StackMap locals:
StackMap stack:
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.socketAPSelector:Ljava/util/function/BiFunction;
ifnull 38
27: .line 390
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
checkcast javax.net.ssl.SSLSocket
astore 6 /* socket */
start local 6 // javax.net.ssl.SSLSocket socket
28: .line 391
aload 3 /* shc */
29: .line 392
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.socketAPSelector:Ljava/util/function/BiFunction;
aload 6 /* socket */
aload 5 /* alps */
invokeinterface java.util.function.BiFunction.apply:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
30: .line 391
putfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
31: .line 393
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
ifnull 34
32: .line 394
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
invokevirtual java.lang.String.isEmpty:()Z
ifne 38
33: .line 395
aload 5 /* alps */
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 38
34: .line 396
StackMap locals: javax.net.ssl.SSLSocket
StackMap stack:
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
35: .line 397
getstatic sun.security.ssl.Alert.NO_APPLICATION_PROTOCOL:Lsun/security/ssl/Alert;
36: .line 398
ldc "No matching application layer protocol values"
37: .line 396
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
end local 6 // javax.net.ssl.SSLSocket socket
38: .line 403
StackMap locals:
StackMap stack:
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
ifnull 40
39: .line 404
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
invokevirtual java.lang.String.isEmpty:()Z
ifeq 46
40: .line 406
StackMap locals:
StackMap stack:
aload 3 /* shc */
ldc ""
putfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
41: .line 407
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
ldc ""
putfield sun.security.ssl.TransportContext.applicationProtocol:Ljava/lang/String;
42: .line 408
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 45
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 45
43: .line 410
ldc "Ignore, no negotiated application layer protocol"
iconst_0
anewarray java.lang.Object
44: .line 409
invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
45: .line 413
StackMap locals:
StackMap stack:
aconst_null
areturn
46: .line 417
StackMap locals:
StackMap stack:
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
iconst_1
iadd
istore 6 /* listLen */
start local 6 // int listLen
47: .line 420
iload 6 /* listLen */
iconst_2
iadd
newarray 8
astore 7 /* extData */
start local 7 // byte[] extData
48: .line 421
aload 7 /* extData */
invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
astore 8 /* m */
start local 8 // java.nio.ByteBuffer m
49: .line 422
aload 8 /* m */
iload 6 /* listLen */
invokestatic sun.security.ssl.Record.putInt16:(Ljava/nio/ByteBuffer;I)V
50: .line 423
aload 8 /* m */
51: .line 424
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
52: .line 423
invokestatic sun.security.ssl.Record.putBytes8:(Ljava/nio/ByteBuffer;[B)V
53: .line 427
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.applicationProtocol:Ljava/lang/String;
putfield sun.security.ssl.TransportContext.applicationProtocol:Ljava/lang/String;
54: .line 432
aload 3 /* shc */
getfield sun.security.ssl.ServerHandshakeContext.handshakeExtensions:Ljava/util/Map;
getstatic sun.security.ssl.SSLExtension.CH_ALPN:Lsun/security/ssl/SSLExtension;
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
55: .line 434
aload 7 /* extData */
areturn
end local 8 // java.nio.ByteBuffer m
end local 7 // byte[] extData
end local 6 // int listLen
end local 5 // java.util.List alps
end local 4 // sun.security.ssl.AlpnExtension$AlpnSpec requestedAlps
end local 3 // sun.security.ssl.ServerHandshakeContext shc
end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
end local 1 // sun.security.ssl.ConnectionContext context
end local 0 // sun.security.ssl.AlpnExtension$SHAlpnProducer this
LocalVariableTable:
Start End Slot Name Signature
0 56 0 this Lsun/security/ssl/AlpnExtension$SHAlpnProducer;
0 56 1 context Lsun/security/ssl/ConnectionContext;
0 56 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
1 56 3 shc Lsun/security/ssl/ServerHandshakeContext;
3 56 4 requestedAlps Lsun/security/ssl/AlpnExtension$AlpnSpec;
13 56 5 alps Ljava/util/List<Ljava/lang/String;>;
16 26 6 engine Ljavax/net/ssl/SSLEngine;
28 38 6 socket Ljavax/net/ssl/SSLSocket;
47 56 6 listLen I
48 56 7 extData [B
49 56 8 m Ljava/nio/ByteBuffer;
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 SHAlpnProducer = sun.security.ssl.AlpnExtension$SHAlpnProducer of sun.security.ssl.AlpnExtension
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake