final class sun.security.ssl.RSAKeyExchange$RSAPremasterSecret implements sun.security.ssl.SSLPossession, sun.security.ssl.SSLCredentials
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.RSAKeyExchange$RSAPremasterSecret
super_class: java.lang.Object
{
final javax.crypto.SecretKey premasterSecret;
descriptor: Ljavax/crypto/SecretKey;
flags: (0x0010) ACC_FINAL
void <init>(javax.crypto.SecretKey);
descriptor: (Ljavax/crypto/SecretKey;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield sun.security.ssl.RSAKeyExchange$RSAPremasterSecret.premasterSecret:Ljavax/crypto/SecretKey;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/RSAKeyExchange$RSAPremasterSecret;
0 3 1 premasterSecret Ljavax/crypto/SecretKey;
MethodParameters:
Name Flags
premasterSecret
byte[] getEncoded(java.security.PublicKey, java.security.SecureRandom);
descriptor: (Ljava/security/PublicKey;Ljava/security/SecureRandom;)[B
flags: (0x0000)
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: ldc "RSA/ECB/PKCS1Padding"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
astore 3
start local 3 1: aload 3
iconst_3
aload 1
aload 2
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/SecureRandom;)V
2: aload 3
aload 0
getfield sun.security.ssl.RSAKeyExchange$RSAPremasterSecret.premasterSecret:Ljavax/crypto/SecretKey;
invokevirtual javax.crypto.Cipher.wrap:(Ljava/security/Key;)[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/RSAKeyExchange$RSAPremasterSecret;
0 3 1 publicKey Ljava/security/PublicKey;
0 3 2 secureRandom Ljava/security/SecureRandom;
1 3 3 cipher Ljavax/crypto/Cipher;
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
publicKey
secureRandom
static sun.security.ssl.RSAKeyExchange$RSAPremasterSecret createPremasterSecret(sun.security.ssl.ClientHandshakeContext);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;)Lsun/security/ssl/RSAKeyExchange$RSAPremasterSecret;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
ifeq 2
1: ldc "SunTls12RsaPremasterSecret"
goto 3
StackMap locals:
StackMap stack:
2: ldc "SunTlsRsaPremasterSecret"
3: StackMap locals:
StackMap stack: java.lang.String
astore 1
start local 1 4: aload 1
invokestatic javax.crypto.KeyGenerator.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
astore 2
start local 2 5: new sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec
dup
6: aload 0
getfield sun.security.ssl.ClientHandshakeContext.clientHelloVersion:I
7: aload 0
getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.id:I
8: invokespecial sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec.<init>:(II)V
9: astore 3
start local 3 10: aload 2
aload 3
aload 0
getfield sun.security.ssl.ClientHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
11: new sun.security.ssl.RSAKeyExchange$RSAPremasterSecret
dup
aload 2
invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
invokespecial sun.security.ssl.RSAKeyExchange$RSAPremasterSecret.<init>:(Ljavax/crypto/SecretKey;)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 chc Lsun/security/ssl/ClientHandshakeContext;
4 12 1 algorithm Ljava/lang/String;
5 12 2 kg Ljavax/crypto/KeyGenerator;
10 12 3 spec Lsun/security/internal/spec/TlsRsaPremasterSecretParameterSpec;
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
chc
static sun.security.ssl.RSAKeyExchange$RSAPremasterSecret decode(sun.security.ssl.ServerHandshakeContext, java.security.PrivateKey, byte[]);
descriptor: (Lsun/security/ssl/ServerHandshakeContext;Ljava/security/PrivateKey;[B)Lsun/security/ssl/RSAKeyExchange$RSAPremasterSecret;
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: iconst_0
istore 4
start local 4 2: ldc "RSA/ECB/PKCS1Padding"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
astore 5
start local 5 3: aload 5
iconst_4
aload 1
4: new sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec
dup
5: aload 0
getfield sun.security.ssl.ServerHandshakeContext.clientHelloVersion:I
6: aload 0
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.id:I
7: invokespecial sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec.<init>:(II)V
8: aload 0
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
9: invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
10: aload 5
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
11: invokestatic sun.security.util.KeyUtil.isOracleJCEProvider:(Ljava/lang/String;)Z
12: ifeq 14
13: iconst_0
goto 15
StackMap locals: byte[] int javax.crypto.Cipher
StackMap stack:
14: iconst_1
StackMap locals:
StackMap stack: int
15: istore 4
16: goto 24
StackMap locals:
StackMap stack: java.lang.Exception
17: astore 6
start local 6 18: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 23
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 23
19: new java.lang.StringBuilder
dup
ldc "The Cipher provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
20: aload 5
invokestatic sun.security.ssl.RSAKeyExchange$RSAPremasterSecret.safeProviderName:(Ljavax/crypto/Cipher;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: ldc " caused exception: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
22: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
23: StackMap locals: java.lang.Exception
StackMap stack:
iconst_1
istore 4
end local 6 24: StackMap locals:
StackMap stack:
iload 4
ifeq 39
25: ldc "RSA/ECB/PKCS1Padding"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
astore 5
26: aload 5
iconst_2
aload 1
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
27: iconst_0
istore 7
start local 7 28: aload 5
aload 2
invokevirtual javax.crypto.Cipher.doFinal:([B)[B
astore 3
29: goto 32
StackMap locals: sun.security.ssl.ServerHandshakeContext java.security.PrivateKey byte[] byte[] int javax.crypto.Cipher top int
StackMap stack: javax.crypto.BadPaddingException
30: pop
31: iconst_1
istore 7
32: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.ServerHandshakeContext.clientHelloVersion:I
aload 0
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.id:I
33: aload 0
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
aload 3
iload 7
34: invokestatic sun.security.util.KeyUtil.checkTlsPreMasterSecretKey:(IILjava/security/SecureRandom;[BZ)[B
astore 3
35: aload 0
getfield sun.security.ssl.ServerHandshakeContext.clientHelloVersion:I
aload 0
getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.id:I
36: aload 3
aload 0
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
37: invokestatic sun.security.ssl.RSAKeyExchange$RSAPremasterSecret.generatePremasterSecret:(II[BLjava/security/SecureRandom;)Ljavax/crypto/SecretKey;
astore 6
end local 7 start local 6 38: goto 42
end local 6 39: StackMap locals: sun.security.ssl.ServerHandshakeContext java.security.PrivateKey byte[] byte[] int javax.crypto.Cipher
StackMap stack:
aload 5
aload 2
40: ldc "TlsRsaPremasterSecret"
iconst_3
41: invokevirtual javax.crypto.Cipher.unwrap:([BLjava/lang/String;I)Ljava/security/Key;
checkcast javax.crypto.SecretKey
astore 6
start local 6 42: StackMap locals: javax.crypto.SecretKey
StackMap stack:
new sun.security.ssl.RSAKeyExchange$RSAPremasterSecret
dup
aload 6
invokespecial sun.security.ssl.RSAKeyExchange$RSAPremasterSecret.<init>:(Ljavax/crypto/SecretKey;)V
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 43 0 shc Lsun/security/ssl/ServerHandshakeContext;
0 43 1 privateKey Ljava/security/PrivateKey;
0 43 2 encrypted [B
1 43 3 encoded [B
2 43 4 needFailover Z
3 43 5 cipher Ljavax/crypto/Cipher;
18 24 6 iue Ljava/lang/Exception;
38 39 6 preMaster Ljavax/crypto/SecretKey;
42 43 6 preMaster Ljavax/crypto/SecretKey;
28 38 7 failed Z
Exception table:
from to target type
3 16 17 Class java.security.InvalidKeyException
3 16 17 Class java.lang.UnsupportedOperationException
28 29 30 Class javax.crypto.BadPaddingException
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
shc
privateKey
encrypted
private static java.lang.String safeProviderName(javax.crypto.Cipher);
descriptor: (Ljavax/crypto/Cipher;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.toString:()Ljava/lang/String;
1: areturn
2: StackMap locals:
StackMap stack: java.lang.Exception
astore 1
start local 1 3: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 7
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 7
4: ldc "Retrieving The Cipher provider name caused exception "
iconst_1
anewarray java.lang.Object
dup
iconst_0
5: aload 1
aastore
6: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 1 7: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 0
invokevirtual javax.crypto.Cipher.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " (provider name not available)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
8: areturn
9: StackMap locals:
StackMap stack: java.lang.Exception
astore 1
start local 1 10: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 14
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 14
11: ldc "Retrieving The Cipher name caused exception "
iconst_1
anewarray java.lang.Object
dup
iconst_0
12: aload 1
aastore
13: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 1 14: StackMap locals:
StackMap stack:
ldc "(cipher/provider names not available)"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 cipher Ljavax/crypto/Cipher;
3 7 1 e Ljava/lang/Exception;
10 14 1 e Ljava/lang/Exception;
Exception table:
from to target type
0 1 2 Class java.lang.Exception
7 8 9 Class java.lang.Exception
MethodParameters:
Name Flags
cipher
private static javax.crypto.SecretKey generatePremasterSecret(int, int, byte[], java.security.SecureRandom);
descriptor: (II[BLjava/security/SecureRandom;)Ljavax/crypto/SecretKey;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 2
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 2
1: ldc "Generating a premaster secret"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
iload 0
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.id:I
if_icmplt 4
3: ldc "SunTls12RsaPremasterSecret"
goto 5
StackMap locals:
StackMap stack:
4: ldc "SunTlsRsaPremasterSecret"
5: StackMap locals:
StackMap stack: java.lang.String
astore 4
start local 4 6: aload 4
invokestatic javax.crypto.KeyGenerator.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
astore 5
start local 5 7: aload 5
new sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec
dup
8: iload 0
iload 1
aload 2
invokespecial sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec.<init>:(II[B)V
9: aload 3
10: invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
11: aload 5
invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
12: areturn
end local 5 end local 4 13: StackMap locals:
StackMap stack: java.security.GeneralSecurityException
astore 4
start local 4 14: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 17
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 17
15: ldc "RSA premaster secret generation error:"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
16: aload 4
getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.security.GeneralSecurityException.printStackTrace:(Ljava/io/PrintStream;)V
17: StackMap locals: java.security.GeneralSecurityException
StackMap stack:
new java.security.GeneralSecurityException
dup
18: ldc "Could not generate premaster secret"
aload 4
19: invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 clientVersion I
0 20 1 serverVersion I
0 20 2 encodedSecret [B
0 20 3 generator Ljava/security/SecureRandom;
6 13 4 s Ljava/lang/String;
7 13 5 kg Ljavax/crypto/KeyGenerator;
14 20 4 iae Ljava/security/GeneralSecurityException;
Exception table:
from to target type
2 12 13 Class java.security.InvalidAlgorithmParameterException
2 12 13 Class java.security.NoSuchAlgorithmException
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
clientVersion
serverVersion
encodedSecret
generator
}
SourceFile: "RSAKeyExchange.java"
NestHost: sun.security.ssl.RSAKeyExchange
InnerClasses:
final RSAPremasterSecret = sun.security.ssl.RSAKeyExchange$RSAPremasterSecret of sun.security.ssl.RSAKeyExchange