final class sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation implements sun.security.ssl.SSLKeyDerivation
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation
super_class: java.lang.Object
{
final sun.security.ssl.HandshakeContext context;
descriptor: Lsun/security/ssl/HandshakeContext;
flags: (0x0010) ACC_FINAL
final javax.crypto.SecretKey preMasterSecret;
descriptor: Ljavax/crypto/SecretKey;
flags: (0x0010) ACC_FINAL
void <init>(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
start local 1 // sun.security.ssl.HandshakeContext context
start local 2 // javax.crypto.SecretKey preMasterSecret
0: .line 79
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 81
aload 0 /* this */
aload 1 /* context */
putfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
2: .line 82
aload 0 /* this */
aload 2 /* preMasterSecret */
putfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.preMasterSecret:Ljavax/crypto/SecretKey;
3: .line 83
return
end local 2 // javax.crypto.SecretKey preMasterSecret
end local 1 // sun.security.ssl.HandshakeContext context
end local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/SSLMasterKeyDerivation$LegacyMasterKeyDerivation;
0 4 1 context Lsun/security/ssl/HandshakeContext;
0 4 2 preMasterSecret Ljavax/crypto/SecretKey;
MethodParameters:
Name Flags
context
preMasterSecret
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=10, locals=11, args_size=3
start local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
start local 1 // java.lang.String algorithm
start local 2 // java.security.spec.AlgorithmParameterSpec params
0: .line 90
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
astore 3 /* cipherSuite */
start local 3 // sun.security.ssl.CipherSuite cipherSuite
1: .line 91
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
astore 4 /* protocolVersion */
start local 4 // sun.security.ssl.ProtocolVersion protocolVersion
2: .line 97
aload 4 /* protocolVersion */
getfield sun.security.ssl.ProtocolVersion.major:B
istore 7 /* majorVersion */
start local 7 // byte majorVersion
3: .line 98
aload 4 /* protocolVersion */
getfield sun.security.ssl.ProtocolVersion.minor:B
istore 8 /* minorVersion */
start local 8 // byte minorVersion
4: .line 99
aload 4 /* protocolVersion */
getfield sun.security.ssl.ProtocolVersion.isDTLS:Z
ifeq 16
5: .line 101
aload 4 /* protocolVersion */
getfield sun.security.ssl.ProtocolVersion.id:I
getstatic sun.security.ssl.ProtocolVersion.DTLS10:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.id:I
if_icmpne 11
6: .line 102
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
istore 7 /* majorVersion */
7: .line 103
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
istore 8 /* minorVersion */
8: .line 105
ldc "SunTlsMasterSecret"
astore 5 /* masterAlg */
start local 5 // java.lang.String masterAlg
9: .line 106
getstatic sun.security.ssl.CipherSuite$HashAlg.H_NONE:Lsun/security/ssl/CipherSuite$HashAlg;
astore 6 /* hashAlg */
start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
10: .line 107
goto 22
end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
end local 5 // java.lang.String masterAlg
11: .line 108
StackMap locals: sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation java.lang.String java.security.spec.AlgorithmParameterSpec sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion top top int int
StackMap stack:
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
istore 7 /* majorVersion */
12: .line 109
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
istore 8 /* minorVersion */
13: .line 111
ldc "SunTls12MasterSecret"
astore 5 /* masterAlg */
start local 5 // java.lang.String masterAlg
14: .line 112
aload 3 /* cipherSuite */
getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
astore 6 /* hashAlg */
start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
15: .line 114
goto 22
end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
end local 5 // java.lang.String masterAlg
16: .line 115
StackMap locals:
StackMap stack:
aload 4 /* protocolVersion */
getfield sun.security.ssl.ProtocolVersion.id:I
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.id:I
if_icmplt 20
17: .line 116
ldc "SunTls12MasterSecret"
astore 5 /* masterAlg */
start local 5 // java.lang.String masterAlg
18: .line 117
aload 3 /* cipherSuite */
getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
astore 6 /* hashAlg */
start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
19: .line 118
goto 22
end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
end local 5 // java.lang.String masterAlg
20: .line 119
StackMap locals:
StackMap stack:
ldc "SunTlsMasterSecret"
astore 5 /* masterAlg */
start local 5 // java.lang.String masterAlg
21: .line 120
getstatic sun.security.ssl.CipherSuite$HashAlg.H_NONE:Lsun/security/ssl/CipherSuite$HashAlg;
astore 6 /* hashAlg */
start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
22: .line 125
StackMap locals: sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation java.lang.String java.security.spec.AlgorithmParameterSpec sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion java.lang.String sun.security.ssl.CipherSuite$HashAlg int int
StackMap stack:
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
getfield sun.security.ssl.SSLSessionImpl.useExtendedMasterSecret:Z
ifeq 33
23: .line 127
ldc "SunTlsExtendedMasterSecret"
astore 5 /* masterAlg */
24: .line 131
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.utilize:()V
25: .line 132
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
astore 10 /* sessionHash */
start local 10 // byte[] sessionHash
26: .line 133
new sun.security.internal.spec.TlsMasterSecretParameterSpec
dup
27: .line 134
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.preMasterSecret:Ljavax/crypto/SecretKey;
28: .line 135
iload 7 /* majorVersion */
sipush 255
iand
iload 8 /* minorVersion */
sipush 255
iand
29: .line 136
aload 10 /* sessionHash */
30: .line 137
aload 6 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
aload 6 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
aload 6 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.blockSize:I
31: .line 133
invokespecial sun.security.internal.spec.TlsMasterSecretParameterSpec.<init>:(Ljavax/crypto/SecretKey;II[BLjava/lang/String;II)V
astore 9 /* spec */
end local 10 // byte[] sessionHash
start local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
32: .line 138
goto 40
end local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
33: .line 139
StackMap locals:
StackMap stack:
new sun.security.internal.spec.TlsMasterSecretParameterSpec
dup
34: .line 140
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.preMasterSecret:Ljavax/crypto/SecretKey;
35: .line 141
iload 7 /* majorVersion */
sipush 255
iand
iload 8 /* minorVersion */
sipush 255
iand
36: .line 142
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
getfield sun.security.ssl.RandomCookie.randomBytes:[B
37: .line 143
aload 0 /* this */
getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
getfield sun.security.ssl.RandomCookie.randomBytes:[B
38: .line 144
aload 6 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
aload 6 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
aload 6 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.blockSize:I
39: .line 139
invokespecial sun.security.internal.spec.TlsMasterSecretParameterSpec.<init>:(Ljavax/crypto/SecretKey;II[B[BLjava/lang/String;II)V
astore 9 /* spec */
start local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
40: .line 148
StackMap locals: sun.security.internal.spec.TlsMasterSecretParameterSpec
StackMap stack:
aload 5 /* masterAlg */
invokestatic javax.crypto.KeyGenerator.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
astore 10 /* kg */
start local 10 // javax.crypto.KeyGenerator kg
41: .line 149
aload 10 /* kg */
aload 9 /* spec */
invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
42: .line 150
aload 10 /* kg */
invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
43: areturn
end local 10 // javax.crypto.KeyGenerator kg
44: .line 152
StackMap locals:
StackMap stack: java.security.GeneralSecurityException
astore 10 /* iae */
start local 10 // java.security.GeneralSecurityException iae
45: .line 157
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 47
ldc "handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 47
46: .line 158
ldc "RSA master secret generation error."
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 10 /* iae */
aastore
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
47: .line 160
StackMap locals: java.security.GeneralSecurityException
StackMap stack:
new java.security.ProviderException
dup
aload 10 /* iae */
invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 10 // java.security.GeneralSecurityException iae
end local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
end local 8 // byte minorVersion
end local 7 // byte majorVersion
end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
end local 5 // java.lang.String masterAlg
end local 4 // sun.security.ssl.ProtocolVersion protocolVersion
end local 3 // sun.security.ssl.CipherSuite cipherSuite
end local 2 // java.security.spec.AlgorithmParameterSpec params
end local 1 // java.lang.String algorithm
end local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
LocalVariableTable:
Start End Slot Name Signature
0 48 0 this Lsun/security/ssl/SSLMasterKeyDerivation$LegacyMasterKeyDerivation;
0 48 1 algorithm Ljava/lang/String;
0 48 2 params Ljava/security/spec/AlgorithmParameterSpec;
1 48 3 cipherSuite Lsun/security/ssl/CipherSuite;
2 48 4 protocolVersion Lsun/security/ssl/ProtocolVersion;
9 11 5 masterAlg Ljava/lang/String;
14 16 5 masterAlg Ljava/lang/String;
18 20 5 masterAlg Ljava/lang/String;
21 48 5 masterAlg Ljava/lang/String;
10 11 6 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
15 16 6 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
19 20 6 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
22 48 6 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
3 48 7 majorVersion B
4 48 8 minorVersion B
32 33 9 spec Lsun/security/internal/spec/TlsMasterSecretParameterSpec;
40 48 9 spec Lsun/security/internal/spec/TlsMasterSecretParameterSpec;
26 32 10 sessionHash [B
41 44 10 kg Ljavax/crypto/KeyGenerator;
45 48 10 iae Ljava/security/GeneralSecurityException;
Exception table:
from to target type
40 43 44 Class java.security.InvalidAlgorithmParameterException
40 43 44 Class java.security.NoSuchAlgorithmException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
algorithm
params
}
SourceFile: "SSLMasterKeyDerivation.java"
NestHost: sun.security.ssl.SSLMasterKeyDerivation
InnerClasses:
final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
private final LegacyMasterKeyDerivation = sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation of sun.security.ssl.SSLMasterKeyDerivation