final class sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation implements sun.security.ssl.SSLKeyDerivation
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation
super_class: java.lang.Object
{
private final sun.security.ssl.HandshakeContext context;
descriptor: Lsun/security/ssl/HandshakeContext;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.security.PrivateKey localPrivateKey;
descriptor: Ljava/security/PrivateKey;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.security.PublicKey peerPublicKey;
descriptor: Ljava/security/PublicKey;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(sun.security.ssl.HandshakeContext, java.security.PrivateKey, java.security.PublicKey);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/security/PrivateKey;Ljava/security/PublicKey;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
2: aload 0
aload 2
putfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.localPrivateKey:Ljava/security/PrivateKey;
3: aload 0
aload 3
putfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.peerPublicKey:Ljava/security/PublicKey;
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/ECDHKeyExchange$ECDHEKAKeyDerivation;
0 5 1 context Lsun/security/ssl/HandshakeContext;
0 5 2 localPrivateKey Ljava/security/PrivateKey;
0 5 3 peerPublicKey Ljava/security/PublicKey;
MethodParameters:
Name Flags
context
localPrivateKey
peerPublicKey
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=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS13PlusSpec:()Z
ifne 2
1: aload 0
aload 1
aload 2
invokevirtual sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.t12DeriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
areturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.t13DeriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/ECDHKeyExchange$ECDHEKAKeyDerivation;
0 3 1 algorithm Ljava/lang/String;
0 3 2 params Ljava/security/spec/AlgorithmParameterSpec;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
algorithm
params
private javax.crypto.SecretKey t12DeriveKey(java.lang.String, java.security.spec.AlgorithmParameterSpec);
descriptor: (Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: ldc "ECDH"
invokestatic sun.security.ssl.JsseJce.getKeyAgreement:(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;
astore 3
start local 3 1: aload 3
aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.localPrivateKey:Ljava/security/PrivateKey;
invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;)V
2: aload 3
aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.peerPublicKey:Ljava/security/PublicKey;
iconst_1
invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
pop
3: aload 3
ldc "TlsPremasterSecret"
invokevirtual javax.crypto.KeyAgreement.generateSecret:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
4: astore 4
start local 4 5: aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
6: invokestatic sun.security.ssl.SSLMasterKeyDerivation.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SSLMasterKeyDerivation;
7: astore 5
start local 5 8: aload 5
ifnonnull 14
9: new javax.net.ssl.SSLHandshakeException
dup
10: new java.lang.StringBuilder
dup
ldc "No expected master key derivation for protocol: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
11: aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
12: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
13: invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals: javax.crypto.KeyAgreement javax.crypto.SecretKey sun.security.ssl.SSLMasterKeyDerivation
StackMap stack:
aload 5
15: aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
aload 4
16: invokevirtual sun.security.ssl.SSLMasterKeyDerivation.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)Lsun/security/ssl/SSLKeyDerivation;
astore 6
start local 6 17: aload 6
ldc "MasterSecret"
aload 2
invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
18: areturn
end local 6 end local 5 end local 4 end local 3 19: StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation java.lang.String java.security.spec.AlgorithmParameterSpec
StackMap stack: java.security.GeneralSecurityException
astore 3
start local 3 20: new javax.net.ssl.SSLHandshakeException
dup
21: ldc "Could not generate secret"
22: invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
23: aload 3
invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
24: checkcast javax.net.ssl.SSLHandshakeException
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lsun/security/ssl/ECDHKeyExchange$ECDHEKAKeyDerivation;
0 25 1 algorithm Ljava/lang/String;
0 25 2 params Ljava/security/spec/AlgorithmParameterSpec;
1 19 3 ka Ljavax/crypto/KeyAgreement;
5 19 4 preMasterSecret Ljavax/crypto/SecretKey;
8 19 5 mskd Lsun/security/ssl/SSLMasterKeyDerivation;
17 19 6 kd Lsun/security/ssl/SSLKeyDerivation;
20 25 3 gse Ljava/security/GeneralSecurityException;
Exception table:
from to target type
0 18 19 Class java.security.GeneralSecurityException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
algorithm
params
private javax.crypto.SecretKey t13DeriveKey(java.lang.String, java.security.spec.AlgorithmParameterSpec);
descriptor: (Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=11, args_size=3
start local 0 start local 1 start local 2 0: ldc "ECDH"
invokestatic sun.security.ssl.JsseJce.getKeyAgreement:(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;
astore 3
start local 3 1: aload 3
aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.localPrivateKey:Ljava/security/PrivateKey;
invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;)V
2: aload 3
aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.peerPublicKey:Ljava/security/PublicKey;
iconst_1
invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
pop
3: aload 3
ldc "TlsPremasterSecret"
invokevirtual javax.crypto.KeyAgreement.generateSecret:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
4: astore 4
start local 4 5: aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
astore 5
start local 5 6: aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
getfield sun.security.ssl.HandshakeContext.handshakeKeyDerivation:Lsun/security/ssl/SSLKeyDerivation;
astore 6
start local 6 7: new sun.security.ssl.HKDF
dup
aload 5
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
invokespecial sun.security.ssl.HKDF.<init>:(Ljava/lang/String;)V
astore 7
start local 7 8: aload 6
ifnonnull 15
9: aload 5
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
newarray 8
astore 8
start local 8 10: new javax.crypto.spec.SecretKeySpec
dup
aload 8
ldc "TlsPreSharedSecret"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
11: astore 9
start local 9 12: aload 7
aload 8
aload 9
ldc "TlsEarlySecret"
invokevirtual sun.security.ssl.HKDF.extract:([BLjavax/crypto/SecretKey;Ljava/lang/String;)Ljavax/crypto/SecretKey;
13: astore 10
start local 10 14: new sun.security.ssl.SSLSecretDerivation
dup
aload 0
getfield sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
aload 10
invokespecial sun.security.ssl.SSLSecretDerivation.<init>:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
astore 6
end local 10 end local 9 end local 8 15: StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation java.lang.String java.security.spec.AlgorithmParameterSpec javax.crypto.KeyAgreement javax.crypto.SecretKey sun.security.ssl.CipherSuite$HashAlg sun.security.ssl.SSLKeyDerivation sun.security.ssl.HKDF
StackMap stack:
aload 6
ldc "TlsSaltSecret"
aconst_null
invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
astore 8
start local 8 16: aload 7
aload 8
aload 4
aload 1
invokevirtual sun.security.ssl.HKDF.extract:(Ljavax/crypto/SecretKey;Ljavax/crypto/SecretKey;Ljava/lang/String;)Ljavax/crypto/SecretKey;
17: areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 18: StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation java.lang.String java.security.spec.AlgorithmParameterSpec
StackMap stack: java.security.GeneralSecurityException
astore 3
start local 3 19: new javax.net.ssl.SSLHandshakeException
dup
20: ldc "Could not generate secret"
21: invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
22: aload 3
invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
23: checkcast javax.net.ssl.SSLHandshakeException
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lsun/security/ssl/ECDHKeyExchange$ECDHEKAKeyDerivation;
0 24 1 algorithm Ljava/lang/String;
0 24 2 params Ljava/security/spec/AlgorithmParameterSpec;
1 18 3 ka Ljavax/crypto/KeyAgreement;
5 18 4 sharedSecret Ljavax/crypto/SecretKey;
6 18 5 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
7 18 6 kd Lsun/security/ssl/SSLKeyDerivation;
8 18 7 hkdf Lsun/security/ssl/HKDF;
10 15 8 zeros [B
12 15 9 ikm Ljavax/crypto/spec/SecretKeySpec;
14 15 10 earlySecret Ljavax/crypto/SecretKey;
16 18 8 saltSecret Ljavax/crypto/SecretKey;
19 24 3 gse Ljava/security/GeneralSecurityException;
Exception table:
from to target type
0 17 18 Class java.security.GeneralSecurityException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
algorithm
params
}
SourceFile: "ECDHKeyExchange.java"
NestHost: sun.security.ssl.ECDHKeyExchange
InnerClasses:
final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
private final ECDHEKAKeyDerivation = sun.security.ssl.ECDHKeyExchange$ECDHEKAKeyDerivation of sun.security.ssl.ECDHKeyExchange