final class sun.security.ssl.SSLSecretDerivation implements sun.security.ssl.SSLKeyDerivation
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.SSLSecretDerivation
super_class: java.lang.Object
{
private static final byte[] sha256EmptyDigest;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final byte[] sha384EmptyDigest;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final sun.security.ssl.HandshakeContext context;
descriptor: Lsun/security/ssl/HandshakeContext;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String hkdfAlg;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final sun.security.ssl.CipherSuite$HashAlg hashAlg;
descriptor: Lsun/security/ssl/CipherSuite$HashAlg;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final javax.crypto.SecretKey secret;
descriptor: Ljavax/crypto/SecretKey;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] transcriptHash;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: bipush 32
newarray 8
dup
iconst_0
1: bipush -29
bastore
dup
iconst_1
bipush -80
bastore
dup
iconst_2
bipush -60
bastore
dup
iconst_3
bipush 66
bastore
dup
iconst_4
2: bipush -104
bastore
dup
iconst_5
bipush -4
bastore
dup
bipush 6
bipush 28
bastore
dup
bipush 7
bipush 20
bastore
dup
bipush 8
3: bipush -102
bastore
dup
bipush 9
bipush -5
bastore
dup
bipush 10
bipush -12
bastore
dup
bipush 11
bipush -56
bastore
dup
bipush 12
4: bipush -103
bastore
dup
bipush 13
bipush 111
bastore
dup
bipush 14
bipush -71
bastore
dup
bipush 15
bipush 36
bastore
dup
bipush 16
5: bipush 39
bastore
dup
bipush 17
bipush -82
bastore
dup
bipush 18
bipush 65
bastore
dup
bipush 19
bipush -28
bastore
dup
bipush 20
6: bipush 100
bastore
dup
bipush 21
bipush -101
bastore
dup
bipush 22
bipush -109
bastore
dup
bipush 23
bipush 76
bastore
dup
bipush 24
7: bipush -92
bastore
dup
bipush 25
bipush -107
bastore
dup
bipush 26
bipush -103
bastore
dup
bipush 27
bipush 27
bastore
dup
bipush 28
8: bipush 120
bastore
dup
bipush 29
bipush 82
bastore
dup
bipush 30
bipush -72
bastore
dup
bipush 31
bipush 85
bastore
9: putstatic sun.security.ssl.SSLSecretDerivation.sha256EmptyDigest:[B
10: bipush 48
newarray 8
dup
iconst_0
11: bipush 56
bastore
dup
iconst_1
bipush -80
bastore
dup
iconst_2
bipush 96
bastore
dup
iconst_3
bipush -89
bastore
dup
iconst_4
12: bipush 81
bastore
dup
iconst_5
bipush -84
bastore
dup
bipush 6
bipush -106
bastore
dup
bipush 7
bipush 56
bastore
dup
bipush 8
13: bipush 76
bastore
dup
bipush 9
bipush -39
bastore
dup
bipush 10
bipush 50
bastore
dup
bipush 11
bipush 126
bastore
dup
bipush 12
14: bipush -79
bastore
dup
bipush 13
bipush -79
bastore
dup
bipush 14
bipush -29
bastore
dup
bipush 15
bipush 106
bastore
dup
bipush 16
15: bipush 33
bastore
dup
bipush 17
bipush -3
bastore
dup
bipush 18
bipush -73
bastore
dup
bipush 19
bipush 17
bastore
dup
bipush 20
16: bipush 20
bastore
dup
bipush 21
bipush -66
bastore
dup
bipush 22
bipush 7
bastore
dup
bipush 23
bipush 67
bastore
dup
bipush 24
17: bipush 76
bastore
dup
bipush 25
bipush 12
bastore
dup
bipush 26
bipush -57
bastore
dup
bipush 27
bipush -65
bastore
dup
bipush 28
18: bipush 99
bastore
dup
bipush 29
bipush -10
bastore
dup
bipush 30
bipush -31
bastore
dup
bipush 31
bipush -38
bastore
dup
bipush 32
19: bipush 39
bastore
dup
bipush 33
bipush 78
bastore
dup
bipush 34
bipush -34
bastore
dup
bipush 35
bipush -65
bastore
dup
bipush 36
20: bipush -25
bastore
dup
bipush 37
bipush 111
bastore
dup
bipush 38
bipush 101
bastore
dup
bipush 39
bipush -5
bastore
dup
bipush 40
21: bipush -43
bastore
dup
bipush 41
bipush 26
bastore
dup
bipush 42
bipush -46
bastore
dup
bipush 43
bipush -15
bastore
dup
bipush 44
22: bipush 72
bastore
dup
bipush 45
bipush -104
bastore
dup
bipush 46
bipush -71
bastore
dup
bipush 47
bipush 91
bastore
23: putstatic sun.security.ssl.SSLSecretDerivation.sha384EmptyDigest:[B
24: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
flags: (0x0000)
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield sun.security.ssl.SSLSecretDerivation.context:Lsun/security/ssl/HandshakeContext;
2: aload 0
aload 2
putfield sun.security.ssl.SSLSecretDerivation.secret:Ljavax/crypto/SecretKey;
3: aload 0
aload 1
getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
putfield sun.security.ssl.SSLSecretDerivation.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
4: aload 0
5: new java.lang.StringBuilder
dup
ldc "HKDF-Expand/Hmac"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SSLSecretDerivation.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
ldc "-"
ldc ""
invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: putfield sun.security.ssl.SSLSecretDerivation.hkdfAlg:Ljava/lang/String;
7: aload 1
getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.update:()V
8: aload 0
aload 1
getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
putfield sun.security.ssl.SSLSecretDerivation.transcriptHash:[B
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/ssl/SSLSecretDerivation;
0 10 1 context Lsun/security/ssl/HandshakeContext;
0 10 2 secret Ljavax/crypto/SecretKey;
MethodParameters:
Name Flags
context
secret
sun.security.ssl.SSLSecretDerivation forContext(sun.security.ssl.HandshakeContext);
descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLSecretDerivation;
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: new sun.security.ssl.SSLSecretDerivation
dup
aload 1
aload 0
getfield sun.security.ssl.SSLSecretDerivation.secret:Ljavax/crypto/SecretKey;
invokespecial sun.security.ssl.SSLSecretDerivation.<init>:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/SSLSecretDerivation;
0 1 1 context Lsun/security/ssl/HandshakeContext;
MethodParameters:
Name Flags
context
public javax.crypto.SecretKey deriveKey(java.lang.String, java.security.spec.AlgorithmParameterSpec);
descriptor: (Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokestatic sun.security.ssl.SSLSecretDerivation$SecretSchedule.valueOf:(Ljava/lang/String;)Lsun/security/ssl/SSLSecretDerivation$SecretSchedule;
astore 3
start local 3 1: aload 3
getstatic sun.security.ssl.SSLSecretDerivation$SecretSchedule.TlsSaltSecret:Lsun/security/ssl/SSLSecretDerivation$SecretSchedule;
if_acmpne 13
2: aload 0
getfield sun.security.ssl.SSLSecretDerivation.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
getstatic sun.security.ssl.CipherSuite$HashAlg.H_SHA256:Lsun/security/ssl/CipherSuite$HashAlg;
if_acmpne 5
3: getstatic sun.security.ssl.SSLSecretDerivation.sha256EmptyDigest:[B
astore 4
start local 4 4: goto 14
end local 4 StackMap locals: sun.security.ssl.SSLSecretDerivation$SecretSchedule
StackMap stack:
5: aload 0
getfield sun.security.ssl.SSLSecretDerivation.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
getstatic sun.security.ssl.CipherSuite$HashAlg.H_SHA384:Lsun/security/ssl/CipherSuite$HashAlg;
if_acmpne 8
6: getstatic sun.security.ssl.SSLSecretDerivation.sha384EmptyDigest:[B
astore 4
start local 4 7: goto 14
end local 4 8: StackMap locals:
StackMap stack:
new javax.net.ssl.SSLHandshakeException
dup
9: new java.lang.StringBuilder
dup
ldc "Unexpected unsupported hash algorithm: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
10: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
11: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSecretDerivation.transcriptHash:[B
astore 4
start local 4 14: StackMap locals: byte[]
StackMap stack:
aload 3
getfield sun.security.ssl.SSLSecretDerivation$SecretSchedule.label:[B
15: aload 4
aload 0
getfield sun.security.ssl.SSLSecretDerivation.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
16: invokestatic sun.security.ssl.SSLSecretDerivation.createHkdfInfo:([B[BI)[B
astore 5
start local 5 17: new sun.security.ssl.HKDF
dup
aload 0
getfield sun.security.ssl.SSLSecretDerivation.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
invokespecial sun.security.ssl.HKDF.<init>:(Ljava/lang/String;)V
astore 6
start local 6 18: aload 6
aload 0
getfield sun.security.ssl.SSLSecretDerivation.secret:Ljavax/crypto/SecretKey;
aload 5
aload 0
getfield sun.security.ssl.SSLSecretDerivation.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
aload 1
invokevirtual sun.security.ssl.HKDF.expand:(Ljavax/crypto/SecretKey;[BILjava/lang/String;)Ljavax/crypto/SecretKey;
19: areturn
end local 6 end local 5 end local 4 20: StackMap locals: sun.security.ssl.SSLSecretDerivation java.lang.String java.security.spec.AlgorithmParameterSpec sun.security.ssl.SSLSecretDerivation$SecretSchedule
StackMap stack: java.security.GeneralSecurityException
astore 4
start local 4 21: new javax.net.ssl.SSLHandshakeException
dup
22: ldc "Could not generate secret"
23: invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
24: aload 4
invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
25: checkcast javax.net.ssl.SSLHandshakeException
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lsun/security/ssl/SSLSecretDerivation;
0 26 1 algorithm Ljava/lang/String;
0 26 2 params Ljava/security/spec/AlgorithmParameterSpec;
1 26 3 ks Lsun/security/ssl/SSLSecretDerivation$SecretSchedule;
4 5 4 expandContext [B
7 8 4 expandContext [B
14 20 4 expandContext [B
17 20 5 hkdfInfo [B
18 20 6 hkdf Lsun/security/ssl/HKDF;
21 26 4 gse Ljava/security/GeneralSecurityException;
Exception table:
from to target type
1 19 20 Class java.security.GeneralSecurityException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
algorithm
params
public static byte[] createHkdfInfo(byte[], byte[], int);
descriptor: ([B[BI)[B
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: iconst_4
aload 0
arraylength
iadd
aload 1
arraylength
iadd
newarray 8
astore 3
start local 3 1: aload 3
invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
astore 4
start local 4 2: aload 4
iload 2
invokestatic sun.security.ssl.Record.putInt16:(Ljava/nio/ByteBuffer;I)V
3: aload 4
aload 0
invokestatic sun.security.ssl.Record.putBytes8:(Ljava/nio/ByteBuffer;[B)V
4: aload 4
aload 1
invokestatic sun.security.ssl.Record.putBytes8:(Ljava/nio/ByteBuffer;[B)V
5: goto 8
StackMap locals: byte[] byte[] int byte[] java.nio.ByteBuffer
StackMap stack: java.io.IOException
6: astore 5
start local 5 7: new java.lang.RuntimeException
dup
ldc "Unexpected exception"
aload 5
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 8: StackMap locals:
StackMap stack:
aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 label [B
0 9 1 context [B
0 9 2 length I
1 9 3 info [B
2 9 4 m Ljava/nio/ByteBuffer;
7 8 5 ioe Ljava/io/IOException;
Exception table:
from to target type
2 5 6 Class java.io.IOException
MethodParameters:
Name Flags
label
context
length
}
SourceFile: "SSLSecretDerivation.java"
NestMembers:
sun.security.ssl.SSLSecretDerivation$SecretSchedule
InnerClasses:
final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
private final SecretSchedule = sun.security.ssl.SSLSecretDerivation$SecretSchedule of sun.security.ssl.SSLSecretDerivation