final class sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer implements sun.security.ssl.HandshakeConsumer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer
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.ServerHello$T13HelloRetryRequestConsumer this
0: .line 1408
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 1410
return
end local 0 // sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/ServerHello$T13HelloRetryRequestConsumer;
public void consume(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=13, args_size=3
start local 0 // sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer this
start local 1 // sun.security.ssl.ConnectionContext context
start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
0: .line 1416
aload 1 /* context */
checkcast sun.security.ssl.ClientHandshakeContext
astore 3 /* chc */
start local 3 // sun.security.ssl.ClientHandshakeContext chc
1: .line 1417
aload 2 /* message */
checkcast sun.security.ssl.ServerHello$ServerHelloMessage
astore 4 /* helloRetryRequest */
start local 4 // sun.security.ssl.ServerHello$ServerHelloMessage helloRetryRequest
2: .line 1418
aload 4 /* helloRetryRequest */
getfield sun.security.ssl.ServerHello$ServerHelloMessage.serverVersion:Lsun/security/ssl/ProtocolVersion;
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
if_acmpeq 6
3: .line 1419
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.PROTOCOL_VERSION:Lsun/security/ssl/Alert;
4: .line 1420
ldc "The HelloRetryRequest.legacy_version is not TLS 1.2"
5: .line 1419
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
6: .line 1423
StackMap locals: sun.security.ssl.ClientHandshakeContext sun.security.ssl.ServerHello$ServerHelloMessage
StackMap stack:
aload 3 /* chc */
aload 4 /* helloRetryRequest */
getfield sun.security.ssl.ServerHello$ServerHelloMessage.cipherSuite:Lsun/security/ssl/CipherSuite;
putfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
7: .line 1430
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
8: .line 1431
getstatic sun.security.ssl.SSLHandshake.HELLO_RETRY_REQUEST:Lsun/security/ssl/SSLHandshake;
9: .line 1430
invokevirtual sun.security.ssl.SSLConfiguration.getEnabledExtensions:(Lsun/security/ssl/SSLHandshake;)[Lsun/security/ssl/SSLExtension;
astore 5 /* extTypes */
start local 5 // sun.security.ssl.SSLExtension[] extTypes
10: .line 1432
aload 4 /* helloRetryRequest */
getfield sun.security.ssl.ServerHello$ServerHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 3 /* chc */
aload 5 /* extTypes */
invokevirtual sun.security.ssl.SSLExtensions.consumeOnLoad:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
11: .line 1437
aload 4 /* helloRetryRequest */
getfield sun.security.ssl.ServerHello$ServerHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 3 /* chc */
aload 5 /* extTypes */
invokevirtual sun.security.ssl.SSLExtensions.consumeOnTrade:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
12: .line 1441
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.finish:()V
13: .line 1444
new sun.security.ssl.HandshakeOutStream
dup
aconst_null
invokespecial sun.security.ssl.HandshakeOutStream.<init>:(Lsun/security/ssl/OutputRecord;)V
astore 6 /* hos */
start local 6 // sun.security.ssl.HandshakeOutStream hos
14: .line 1446
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.initialClientHelloMsg:Lsun/security/ssl/ClientHello$ClientHelloMessage;
aload 6 /* hos */
invokevirtual sun.security.ssl.ClientHello$ClientHelloMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
15: .line 1447
goto 20
StackMap locals: sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHandshakeContext sun.security.ssl.ServerHello$ServerHelloMessage sun.security.ssl.SSLExtension[] sun.security.ssl.HandshakeOutStream
StackMap stack: java.io.IOException
16: astore 7 /* ioe */
start local 7 // java.io.IOException ioe
17: .line 1449
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
18: .line 1450
ldc "Failed to construct message hash"
aload 7 /* ioe */
19: .line 1449
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 7 // java.io.IOException ioe
20: .line 1452
StackMap locals:
StackMap stack:
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 6 /* hos */
invokevirtual sun.security.ssl.HandshakeOutStream.toByteArray:()[B
invokevirtual sun.security.ssl.HandshakeHash.deliver:([B)V
21: .line 1453
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
22: .line 1454
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
23: .line 1453
invokevirtual sun.security.ssl.HandshakeHash.determine:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;)V
24: .line 1455
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
astore 7 /* clientHelloHash */
start local 7 // byte[] clientHelloHash
25: .line 1464
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
istore 8 /* hashLen */
start local 8 // int hashLen
26: .line 1465
iconst_4
iload 8 /* hashLen */
iadd
newarray 8
astore 9 /* hashedClientHello */
start local 9 // byte[] hashedClientHello
27: .line 1466
aload 9 /* hashedClientHello */
iconst_0
getstatic sun.security.ssl.SSLHandshake.MESSAGE_HASH:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
bastore
28: .line 1467
aload 9 /* hashedClientHello */
iconst_1
iconst_0
bastore
29: .line 1468
aload 9 /* hashedClientHello */
iconst_2
iconst_0
bastore
30: .line 1469
aload 9 /* hashedClientHello */
iconst_3
iload 8 /* hashLen */
sipush 255
iand
i2b
bastore
31: .line 1470
aload 7 /* clientHelloHash */
iconst_0
32: .line 1471
aload 9 /* hashedClientHello */
iconst_4
iload 8 /* hashLen */
33: .line 1470
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
34: .line 1473
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.finish:()V
35: .line 1474
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 9 /* hashedClientHello */
invokevirtual sun.security.ssl.HandshakeHash.deliver:([B)V
36: .line 1476
aload 4 /* helloRetryRequest */
getfield sun.security.ssl.ServerHello$ServerHelloMessage.handshakeRecord:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 10 /* hrrBodyLen */
start local 10 // int hrrBodyLen
37: .line 1477
iconst_4
iload 10 /* hrrBodyLen */
iadd
newarray 8
astore 11 /* hrrMessage */
start local 11 // byte[] hrrMessage
38: .line 1478
aload 11 /* hrrMessage */
iconst_0
getstatic sun.security.ssl.SSLHandshake.HELLO_RETRY_REQUEST:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
bastore
39: .line 1479
aload 11 /* hrrMessage */
iconst_1
iload 10 /* hrrBodyLen */
bipush 16
ishr
sipush 255
iand
i2b
bastore
40: .line 1480
aload 11 /* hrrMessage */
iconst_2
iload 10 /* hrrBodyLen */
bipush 8
ishr
sipush 255
iand
i2b
bastore
41: .line 1481
aload 11 /* hrrMessage */
iconst_3
iload 10 /* hrrBodyLen */
sipush 255
iand
i2b
bastore
42: .line 1483
aload 4 /* helloRetryRequest */
getfield sun.security.ssl.ServerHello$ServerHelloMessage.handshakeRecord:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 12 /* hrrBody */
start local 12 // java.nio.ByteBuffer hrrBody
43: .line 1484
aload 12 /* hrrBody */
aload 11 /* hrrMessage */
iconst_4
iload 10 /* hrrBodyLen */
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
44: .line 1486
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 11 /* hrrMessage */
invokevirtual sun.security.ssl.HandshakeHash.receive:([B)V
45: .line 1489
aload 3 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.initialClientHelloMsg:Lsun/security/ssl/ClientHello$ClientHelloMessage;
getfield sun.security.ssl.ClientHello$ClientHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
aload 3 /* chc */
46: .line 1490
iconst_3
anewarray sun.security.ssl.SSLExtension
dup
iconst_0
47: .line 1491
getstatic sun.security.ssl.SSLExtension.CH_COOKIE:Lsun/security/ssl/SSLExtension;
aastore
dup
iconst_1
48: .line 1492
getstatic sun.security.ssl.SSLExtension.CH_KEY_SHARE:Lsun/security/ssl/SSLExtension;
aastore
dup
iconst_2
49: .line 1493
getstatic sun.security.ssl.SSLExtension.CH_PRE_SHARED_KEY:Lsun/security/ssl/SSLExtension;
aastore
50: .line 1489
invokevirtual sun.security.ssl.SSLExtensions.reproduce:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
51: .line 1499
getstatic sun.security.ssl.SSLHandshake.CLIENT_HELLO:Lsun/security/ssl/SSLHandshake;
aload 1 /* context */
aload 4 /* helloRetryRequest */
invokevirtual sun.security.ssl.SSLHandshake.produce:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
pop
52: .line 1500
return
end local 12 // java.nio.ByteBuffer hrrBody
end local 11 // byte[] hrrMessage
end local 10 // int hrrBodyLen
end local 9 // byte[] hashedClientHello
end local 8 // int hashLen
end local 7 // byte[] clientHelloHash
end local 6 // sun.security.ssl.HandshakeOutStream hos
end local 5 // sun.security.ssl.SSLExtension[] extTypes
end local 4 // sun.security.ssl.ServerHello$ServerHelloMessage helloRetryRequest
end local 3 // sun.security.ssl.ClientHandshakeContext chc
end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
end local 1 // sun.security.ssl.ConnectionContext context
end local 0 // sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer this
LocalVariableTable:
Start End Slot Name Signature
0 53 0 this Lsun/security/ssl/ServerHello$T13HelloRetryRequestConsumer;
0 53 1 context Lsun/security/ssl/ConnectionContext;
0 53 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
1 53 3 chc Lsun/security/ssl/ClientHandshakeContext;
2 53 4 helloRetryRequest Lsun/security/ssl/ServerHello$ServerHelloMessage;
10 53 5 extTypes [Lsun/security/ssl/SSLExtension;
14 53 6 hos Lsun/security/ssl/HandshakeOutStream;
17 20 7 ioe Ljava/io/IOException;
25 53 7 clientHelloHash [B
26 53 8 hashLen I
27 53 9 hashedClientHello [B
37 53 10 hrrBodyLen I
38 53 11 hrrMessage [B
43 53 12 hrrBody Ljava/nio/ByteBuffer;
Exception table:
from to target type
14 15 16 Class java.io.IOException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
}
SourceFile: "ServerHello.java"
NestHost: sun.security.ssl.ServerHello
InnerClasses:
final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
final ClientHelloMessage = sun.security.ssl.ClientHello$ClientHelloMessage of sun.security.ssl.ClientHello
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
final ServerHelloMessage = sun.security.ssl.ServerHello$ServerHelloMessage of sun.security.ssl.ServerHello
private final T13HelloRetryRequestConsumer = sun.security.ssl.ServerHello$T13HelloRetryRequestConsumer of sun.security.ssl.ServerHello