final class sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage extends sun.security.ssl.SSLHandshake$HandshakeMessage
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage
super_class: sun.security.ssl.SSLHandshake$HandshakeMessage
{
private final byte[] modulus;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] exponent;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] paramsSignature;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private void <init>(sun.security.ssl.HandshakeContext, sun.security.ssl.X509Authentication$X509Possession, sun.security.ssl.RSAKeyExchange$EphemeralRSAPossession);
descriptor: (Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/X509Authentication$X509Possession;Lsun/security/ssl/RSAKeyExchange$EphemeralRSAPossession;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
1: aload 1
checkcast sun.security.ssl.ServerHandshakeContext
2: astore 4
start local 4 3: aload 3
getfield sun.security.ssl.RSAKeyExchange$EphemeralRSAPossession.popPublicKey:Ljava/security/interfaces/RSAPublicKey;
astore 5
start local 5 4: aload 5
invokestatic sun.security.ssl.JsseJce.getRSAPublicKeySpec:(Ljava/security/PublicKey;)Ljava/security/spec/RSAPublicKeySpec;
astore 6
start local 6 5: aload 0
aload 6
invokevirtual java.security.spec.RSAPublicKeySpec.getModulus:()Ljava/math/BigInteger;
invokestatic sun.security.ssl.Utilities.toByteArray:(Ljava/math/BigInteger;)[B
putfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
6: aload 0
aload 6
invokevirtual java.security.spec.RSAPublicKeySpec.getPublicExponent:()Ljava/math/BigInteger;
invokestatic sun.security.ssl.Utilities.toByteArray:(Ljava/math/BigInteger;)[B
putfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
7: aconst_null
astore 7
start local 7 8: invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
astore 8
start local 8 9: aload 8
aload 2
getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
10: aload 4
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
11: invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V
12: aload 0
aload 8
13: aload 4
getfield sun.security.ssl.ServerHandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
getfield sun.security.ssl.RandomCookie.randomBytes:[B
14: aload 4
getfield sun.security.ssl.ServerHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
getfield sun.security.ssl.RandomCookie.randomBytes:[B
15: invokevirtual sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
16: aload 8
invokevirtual java.security.Signature.sign:()[B
astore 7
end local 8 17: goto 22
18: StackMap locals: sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage sun.security.ssl.HandshakeContext sun.security.ssl.X509Authentication$X509Possession sun.security.ssl.RSAKeyExchange$EphemeralRSAPossession sun.security.ssl.ServerHandshakeContext java.security.interfaces.RSAPublicKey java.security.spec.RSAPublicKeySpec byte[]
StackMap stack: java.security.GeneralSecurityException
astore 8
start local 8 19: aload 4
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
20: ldc "Failed to sign ephemeral RSA parameters"
aload 8
21: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 8 22: StackMap locals:
StackMap stack:
aload 0
aload 7
putfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.paramsSignature:[B
23: return
end local 7 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 24 0 this Lsun/security/ssl/RSAServerKeyExchange$RSAServerKeyExchangeMessage;
0 24 1 handshakeContext Lsun/security/ssl/HandshakeContext;
0 24 2 x509Possession Lsun/security/ssl/X509Authentication$X509Possession;
0 24 3 rsaPossession Lsun/security/ssl/RSAKeyExchange$EphemeralRSAPossession;
3 24 4 shc Lsun/security/ssl/ServerHandshakeContext;
4 24 5 publicKey Ljava/security/interfaces/RSAPublicKey;
5 24 6 spec Ljava/security/spec/RSAPublicKeySpec;
8 24 7 signature [B
9 17 8 signer Ljava/security/Signature;
19 22 8 ex Ljava/security/GeneralSecurityException;
Exception table:
from to target type
8 17 18 Class java.security.NoSuchAlgorithmException
8 17 18 Class java.security.InvalidKeyException
8 17 18 Class java.security.SignatureException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
handshakeContext
x509Possession
rsaPossession
void <init>(sun.security.ssl.HandshakeContext, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
flags: (0x0000)
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
1: aload 1
checkcast sun.security.ssl.ClientHandshakeContext
2: astore 3
start local 3 3: aload 0
aload 2
invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
putfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
4: aload 0
aload 2
invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
putfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
5: aload 0
aload 2
invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
putfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.paramsSignature:[B
6: aconst_null
astore 4
start local 4 7: aload 3
getfield sun.security.ssl.ClientHandshakeContext.handshakeCredentials:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 12
StackMap locals: sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage sun.security.ssl.HandshakeContext java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.X509Authentication$X509Credentials top java.util.Iterator
StackMap stack:
8: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.SSLCredentials
astore 5
start local 5 9: aload 5
instanceof sun.security.ssl.X509Authentication$X509Credentials
ifeq 12
10: aload 5
checkcast sun.security.ssl.X509Authentication$X509Credentials
astore 4
11: goto 13
end local 5 12: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
13: StackMap locals: sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage sun.security.ssl.HandshakeContext java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.X509Authentication$X509Credentials
StackMap stack:
aload 4
ifnonnull 17
14: aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
15: ldc "No RSA credentials negotiated for server key exchange"
16: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
17: StackMap locals:
StackMap stack:
invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
astore 5
start local 5 18: aload 5
aload 4
getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
19: aload 0
aload 5
20: aload 3
getfield sun.security.ssl.ClientHandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
getfield sun.security.ssl.RandomCookie.randomBytes:[B
21: aload 3
getfield sun.security.ssl.ClientHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
getfield sun.security.ssl.RandomCookie.randomBytes:[B
22: invokevirtual sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
23: aload 5
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.paramsSignature:[B
invokevirtual java.security.Signature.verify:([B)Z
ifne 31
24: aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
25: ldc "Invalid signature of RSA ServerKeyExchange message"
26: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
end local 5 27: StackMap locals:
StackMap stack: java.security.GeneralSecurityException
astore 5
start local 5 28: aload 3
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
29: ldc "Failed to sign ephemeral RSA parameters"
aload 5
30: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 5 31: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lsun/security/ssl/RSAServerKeyExchange$RSAServerKeyExchangeMessage;
0 32 1 handshakeContext Lsun/security/ssl/HandshakeContext;
0 32 2 m Ljava/nio/ByteBuffer;
3 32 3 chc Lsun/security/ssl/ClientHandshakeContext;
7 32 4 x509Credentials Lsun/security/ssl/X509Authentication$X509Credentials;
9 12 5 cd Lsun/security/ssl/SSLCredentials;
18 27 5 signer Ljava/security/Signature;
28 31 5 ex Ljava/security/GeneralSecurityException;
Exception table:
from to target type
17 27 27 Class java.security.NoSuchAlgorithmException
17 27 27 Class java.security.InvalidKeyException
17 27 27 Class java.security.SignatureException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
handshakeContext
m
sun.security.ssl.SSLHandshake handshakeType();
descriptor: ()Lsun/security/ssl/SSLHandshake;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: getstatic sun.security.ssl.SSLHandshake.SERVER_KEY_EXCHANGE:Lsun/security/ssl/SSLHandshake;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/RSAServerKeyExchange$RSAServerKeyExchangeMessage;
int messageLength();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: bipush 6
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
arraylength
iadd
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
arraylength
iadd
1: aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.paramsSignature:[B
arraylength
2: iadd
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/RSAServerKeyExchange$RSAServerKeyExchangeMessage;
void send(sun.security.ssl.HandshakeOutStream);
descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
1: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
2: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.paramsSignature:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/RSAServerKeyExchange$RSAServerKeyExchangeMessage;
0 4 1 hos Lsun/security/ssl/HandshakeOutStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
hos
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=1
start local 0 0: new java.text.MessageFormat
dup
1: ldc "\"RSA ServerKeyExchange\": '{'\n \"parameters\": '{'\n \"rsa_modulus\": '{'\n{0}\n '}',\n \"rsa_exponent\": '{'\n{1}\n '}'\n '}',\n \"digital signature\": '{'\n \"signature\": '{'\n{2}\n '}',\n '}'\n'}'"
2: getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
3: invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
astore 1
start local 1 4: new sun.security.util.HexDumpEncoder
dup
invokespecial sun.security.util.HexDumpEncoder.<init>:()V
astore 2
start local 2 5: iconst_3
anewarray java.lang.Object
dup
iconst_0
6: aload 2
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
ldc " "
7: invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
aastore
dup
iconst_1
8: aload 2
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
ldc " "
9: invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
aastore
dup
iconst_2
10: aload 2
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.paramsSignature:[B
invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
ldc " "
11: invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
aastore
12: astore 3
start local 3 13: aload 1
aload 3
invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/ssl/RSAServerKeyExchange$RSAServerKeyExchangeMessage;
4 14 1 messageFormat Ljava/text/MessageFormat;
5 14 2 hexEncoder Lsun/security/util/HexDumpEncoder;
13 14 3 messageFields [Ljava/lang/Object;
private void updateSignature(java.security.Signature, byte[], byte[]);
descriptor: (Ljava/security/Signature;[B[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
aload 2
invokevirtual java.security.Signature.update:([B)V
1: aload 1
aload 3
invokevirtual java.security.Signature.update:([B)V
2: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
arraylength
bipush 8
ishr
i2b
invokevirtual java.security.Signature.update:(B)V
3: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
arraylength
sipush 255
iand
i2b
invokevirtual java.security.Signature.update:(B)V
4: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.modulus:[B
invokevirtual java.security.Signature.update:([B)V
5: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
arraylength
bipush 8
ishr
i2b
invokevirtual java.security.Signature.update:(B)V
6: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
arraylength
sipush 255
iand
i2b
invokevirtual java.security.Signature.update:(B)V
7: aload 1
aload 0
getfield sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage.exponent:[B
invokevirtual java.security.Signature.update:([B)V
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/ssl/RSAServerKeyExchange$RSAServerKeyExchangeMessage;
0 9 1 signature Ljava/security/Signature;
0 9 2 clntNonce [B
0 9 3 svrNonce [B
Exceptions:
throws java.security.SignatureException
MethodParameters:
Name Flags
signature
clntNonce
svrNonce
}
SourceFile: "RSAServerKeyExchange.java"
NestHost: sun.security.ssl.RSAServerKeyExchange
InnerClasses:
final EphemeralRSAPossession = sun.security.ssl.RSAKeyExchange$EphemeralRSAPossession of sun.security.ssl.RSAKeyExchange
private final RSAServerKeyExchangeMessage = sun.security.ssl.RSAServerKeyExchange$RSAServerKeyExchangeMessage of sun.security.ssl.RSAServerKeyExchange
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
final X509Credentials = sun.security.ssl.X509Authentication$X509Credentials of sun.security.ssl.X509Authentication
final X509Possession = sun.security.ssl.X509Authentication$X509Possession of sun.security.ssl.X509Authentication