final class sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange extends sun.security.ssl.HandshakeMessage$ServerKeyExchange
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange
super_class: sun.security.ssl.HandshakeMessage$ServerKeyExchange
{
private static final boolean dhKeyExchangeFix;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private byte[] dh_p;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] dh_g;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] dh_Ys;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] signature;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
sun.security.ssl.ProtocolVersion protocolVersion;
descriptor: Lsun/security/ssl/ProtocolVersion;
flags: (0x0000)
private sun.security.ssl.SignatureAndHashAlgorithm preferableSignatureAlgorithm;
descriptor: Lsun/security/ssl/SignatureAndHashAlgorithm;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc "com.sun.net.ssl.dhKeyExchangeFix"
iconst_1
invokestatic sun.security.ssl.Debug.getBooleanProperty:(Ljava/lang/String;Z)Z
1: putstatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dhKeyExchangeFix:Z
2: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(sun.security.ssl.DHCrypt, sun.security.ssl.ProtocolVersion);
descriptor: (Lsun/security/ssl/DHCrypt;Lsun/security/ssl/ProtocolVersion;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
1: aload 0
aload 2
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
2: aload 0
aconst_null
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
3: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.setValues:(Lsun/security/ssl/DHCrypt;)V
4: aload 0
aconst_null
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 6 1 obj Lsun/security/ssl/DHCrypt;
0 6 2 protocolVersion Lsun/security/ssl/ProtocolVersion;
MethodParameters:
Name Flags
obj
protocolVersion
void <init>(sun.security.ssl.DHCrypt, java.security.PrivateKey, byte[], byte[], java.security.SecureRandom, sun.security.ssl.SignatureAndHashAlgorithm, sun.security.ssl.ProtocolVersion);
descriptor: (Lsun/security/ssl/DHCrypt;Ljava/security/PrivateKey;[B[BLjava/security/SecureRandom;Lsun/security/ssl/SignatureAndHashAlgorithm;Lsun/security/ssl/ProtocolVersion;)V
flags: (0x0000)
Code:
stack=4, locals=9, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 0
invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
1: aload 0
aload 7
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
2: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.setValues:(Lsun/security/ssl/DHCrypt;)V
3: aload 7
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 7
4: aload 0
aload 6
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
5: aload 6
invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
astore 8
start local 8 6: goto 12
end local 8 7: StackMap locals: sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange sun.security.ssl.DHCrypt java.security.PrivateKey byte[] byte[] java.security.SecureRandom sun.security.ssl.SignatureAndHashAlgorithm sun.security.ssl.ProtocolVersion
StackMap stack:
aload 0
aconst_null
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
8: aload 2
invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
ldc "DSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 11
9: ldc "DSA"
invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
astore 8
start local 8 10: goto 12
end local 8 11: StackMap locals:
StackMap stack:
invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
astore 8
start local 8 12: StackMap locals: java.security.Signature
StackMap stack:
aload 8
aload 2
aload 5
invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V
13: aload 0
aload 8
aload 3
aload 4
invokevirtual sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.updateSignature:(Ljava/security/Signature;[B[B)V
14: aload 0
aload 8
invokevirtual java.security.Signature.sign:()[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
15: return
end local 8 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 16 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 16 1 obj Lsun/security/ssl/DHCrypt;
0 16 2 key Ljava/security/PrivateKey;
0 16 3 clntNonce [B
0 16 4 svrNonce [B
0 16 5 sr Ljava/security/SecureRandom;
0 16 6 signAlgorithm Lsun/security/ssl/SignatureAndHashAlgorithm;
0 16 7 protocolVersion Lsun/security/ssl/ProtocolVersion;
6 7 8 sig Ljava/security/Signature;
10 11 8 sig Ljava/security/Signature;
12 16 8 sig Ljava/security/Signature;
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
obj
key
clntNonce
svrNonce
sr
signAlgorithm
protocolVersion
void <init>(sun.security.ssl.HandshakeInStream, sun.security.ssl.ProtocolVersion);
descriptor: (Lsun/security/ssl/HandshakeInStream;Lsun/security/ssl/ProtocolVersion;)V
flags: (0x0000)
Code:
stack=8, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
1: aload 0
aload 2
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
2: aload 0
aconst_null
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
3: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
4: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
5: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
6: new javax.crypto.spec.DHPublicKeySpec
dup
new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
7: new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
8: new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
9: invokespecial javax.crypto.spec.DHPublicKeySpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
invokestatic sun.security.util.KeyUtil.validate:(Ljava/security/spec/KeySpec;)V
10: aload 0
aconst_null
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
11: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 12 1 input Lsun/security/ssl/HandshakeInStream;
0 12 2 protocolVersion Lsun/security/ssl/ProtocolVersion;
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
MethodParameters:
Name Flags
input
protocolVersion
void <init>(sun.security.ssl.HandshakeInStream, java.security.PublicKey, byte[], byte[], int, java.util.Collection<sun.security.ssl.SignatureAndHashAlgorithm>, sun.security.ssl.ProtocolVersion);
descriptor: (Lsun/security/ssl/HandshakeInStream;Ljava/security/PublicKey;[B[BILjava/util/Collection;Lsun/security/ssl/ProtocolVersion;)V
flags: (0x0000)
Code:
stack=8, locals=12, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 0
invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
1: aload 0
aload 7
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
2: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
3: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
4: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
5: new javax.crypto.spec.DHPublicKeySpec
dup
new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
6: new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
7: new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
8: invokespecial javax.crypto.spec.DHPublicKeySpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
invokestatic sun.security.util.KeyUtil.validate:(Ljava/security/spec/KeySpec;)V
9: aload 7
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 22
10: aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
istore 8
start local 8 11: aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
istore 9
start local 9 12: aload 0
13: iload 8
iload 9
iconst_0
invokestatic sun.security.ssl.SignatureAndHashAlgorithm.valueOf:(III)Lsun/security/ssl/SignatureAndHashAlgorithm;
14: putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
15: aload 6
16: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
17: invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
18: ifne 23
19: new javax.net.ssl.SSLHandshakeException
dup
20: ldc "Unsupported SignatureAndHashAlgorithm in ServerKeyExchange message"
21: invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
end local 9 end local 8 22: StackMap locals: sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] int java.util.Collection sun.security.ssl.ProtocolVersion
StackMap stack:
aload 0
aconst_null
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
23: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dhKeyExchangeFix:Z
ifeq 26
24: aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
astore 8
start local 8 25: goto 31
end local 8 26: StackMap locals:
StackMap stack:
iload 5
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
arraylength
iconst_2
iadd
isub
istore 5
27: iload 5
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
arraylength
iconst_2
iadd
isub
istore 5
28: iload 5
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
arraylength
iconst_2
iadd
isub
istore 5
29: iload 5
newarray 8
astore 8
start local 8 30: aload 1
aload 8
invokevirtual sun.security.ssl.HandshakeInStream.read:([B)I
pop
31: StackMap locals: byte[]
StackMap stack:
aload 2
invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
astore 10
start local 10 32: aload 7
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 36
33: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
34: invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
astore 9
start local 9 35: goto 44
end local 9 36: StackMap locals: sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] int java.util.Collection sun.security.ssl.ProtocolVersion byte[] top java.lang.String
StackMap stack:
aload 10
dup
astore 11
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 2
67986: 37
81440: 38
default: 43
}
StackMap locals: java.lang.String
StackMap stack:
37: aload 11
ldc "DSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 39
goto 43
StackMap locals:
StackMap stack:
38: aload 11
ldc "RSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 41
goto 43
39: StackMap locals:
StackMap stack:
ldc "DSA"
invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
astore 9
start local 9 40: goto 44
end local 9 41: StackMap locals:
StackMap stack:
invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
astore 9
start local 9 42: goto 44
end local 9 43: StackMap locals:
StackMap stack:
new javax.net.ssl.SSLKeyException
dup
ldc "neither an RSA or a DSA key"
invokespecial javax.net.ssl.SSLKeyException.<init>:(Ljava/lang/String;)V
athrow
start local 9 44: StackMap locals: sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] int java.util.Collection sun.security.ssl.ProtocolVersion byte[] java.security.Signature java.lang.String
StackMap stack:
aload 9
aload 2
invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
45: aload 0
aload 9
aload 3
aload 4
invokevirtual sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.updateSignature:(Ljava/security/Signature;[B[B)V
46: aload 9
aload 8
invokevirtual java.security.Signature.verify:([B)Z
ifne 48
47: new javax.net.ssl.SSLKeyException
dup
ldc "Server D-H key verification failed"
invokespecial javax.net.ssl.SSLKeyException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack:
return
end local 10 end local 9 end local 8 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 49 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 49 1 input Lsun/security/ssl/HandshakeInStream;
0 49 2 publicKey Ljava/security/PublicKey;
0 49 3 clntNonce [B
0 49 4 svrNonce [B
0 49 5 messageSize I
0 49 6 localSupportedSignAlgs Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;
0 49 7 protocolVersion Lsun/security/ssl/ProtocolVersion;
11 22 8 hash I
12 22 9 signature I
25 26 8 signature [B
30 49 8 signature [B
35 36 9 sig Ljava/security/Signature;
40 41 9 sig Ljava/security/Signature;
42 43 9 sig Ljava/security/Signature;
44 49 9 sig Ljava/security/Signature;
32 49 10 algorithm Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
Signature: (Lsun/security/ssl/HandshakeInStream;Ljava/security/PublicKey;[B[BILjava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;Lsun/security/ssl/ProtocolVersion;)V
MethodParameters:
Name Flags
input
publicKey
clntNonce
svrNonce
messageSize
localSupportedSignAlgs
protocolVersion
java.math.BigInteger getModulus();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
java.math.BigInteger getBase();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
java.math.BigInteger getServerPublicKey();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: new java.math.BigInteger
dup
iconst_1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
invokespecial java.math.BigInteger.<init>:(I[B)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
private void updateSignature(java.security.Signature, byte[], byte[]);
descriptor: (Ljava/security/Signature;[B[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, 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 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
arraylength
istore 4
start local 4 3: aload 1
iload 4
bipush 8
ishr
i2b
invokevirtual java.security.Signature.update:(B)V
4: aload 1
iload 4
sipush 255
iand
i2b
invokevirtual java.security.Signature.update:(B)V
5: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
invokevirtual java.security.Signature.update:([B)V
6: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
arraylength
istore 4
7: aload 1
iload 4
bipush 8
ishr
i2b
invokevirtual java.security.Signature.update:(B)V
8: aload 1
iload 4
sipush 255
iand
i2b
invokevirtual java.security.Signature.update:(B)V
9: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
invokevirtual java.security.Signature.update:([B)V
10: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
arraylength
istore 4
11: aload 1
iload 4
bipush 8
ishr
i2b
invokevirtual java.security.Signature.update:(B)V
12: aload 1
iload 4
sipush 255
iand
i2b
invokevirtual java.security.Signature.update:(B)V
13: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
invokevirtual java.security.Signature.update:([B)V
14: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 15 1 sig Ljava/security/Signature;
0 15 2 clntNonce [B
0 15 3 svrNonce [B
3 15 4 tmp I
Exceptions:
throws java.security.SignatureException
MethodParameters:
Name Flags
sig
clntNonce
svrNonce
private void setValues(sun.security.ssl.DHCrypt);
descriptor: (Lsun/security/ssl/DHCrypt;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual sun.security.ssl.DHCrypt.getModulus:()Ljava/math/BigInteger;
invokestatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.toByteArray:(Ljava/math/BigInteger;)[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
1: aload 0
aload 1
invokevirtual sun.security.ssl.DHCrypt.getBase:()Ljava/math/BigInteger;
invokestatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.toByteArray:(Ljava/math/BigInteger;)[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
2: aload 0
aload 1
invokevirtual sun.security.ssl.DHCrypt.getPublicKey:()Ljava/math/BigInteger;
invokestatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.toByteArray:(Ljava/math/BigInteger;)[B
putfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 4 1 obj Lsun/security/ssl/DHCrypt;
MethodParameters:
Name Flags
obj
int messageLength();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=2, args_size=1
start local 0 0: bipush 6
istore 1
start local 1 1: iload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
arraylength
iadd
istore 1
2: iload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
arraylength
iadd
istore 1
3: iload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
arraylength
iadd
istore 1
4: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
ifnull 10
5: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 7
6: iload 1
invokestatic sun.security.ssl.SignatureAndHashAlgorithm.sizeInRecord:()I
iadd
istore 1
7: StackMap locals: int
StackMap stack:
iload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
arraylength
iadd
istore 1
8: getstatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dhKeyExchangeFix:Z
ifeq 10
9: iinc 1 2
10: StackMap locals:
StackMap stack:
iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
1 11 1 temp I
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.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
1: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
2: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
3: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
ifnull 11
4: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 7
5: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getHashValue:()I
invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
6: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getSignatureValue:()I
invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
7: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dhKeyExchangeFix:Z
ifeq 10
8: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
9: goto 11
10: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
invokevirtual sun.security.ssl.HandshakeOutStream.write:([B)V
11: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 12 1 s Lsun/security/ssl/HandshakeOutStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
void print(java.io.PrintStream);
descriptor: (Ljava/io/PrintStream;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "*** Diffie-Hellman ServerKeyExchange"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
1: getstatic sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.debug:Lsun/security/ssl/Debug;
ifnull 13
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 13
2: aload 1
ldc "DH Modulus"
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_p:[B
invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
3: aload 1
ldc "DH Base"
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_g:[B
invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
4: aload 1
ldc "Server DH Public Key"
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.dh_Ys:[B
invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
5: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.signature:[B
ifnonnull 8
6: aload 1
ldc "Anonymous"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
7: goto 13
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 12
9: aload 1
new java.lang.StringBuilder
dup
ldc "Signature Algorithm "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
10: aload 0
getfield sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
12: StackMap locals:
StackMap stack:
aload 1
ldc "Signed with a DSA or RSA public key"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
13: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/ssl/HandshakeMessage$DH_ServerKeyExchange;
0 14 1 s Ljava/io/PrintStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
final DH_ServerKeyExchange = sun.security.ssl.HandshakeMessage$DH_ServerKeyExchange of sun.security.ssl.HandshakeMessage
abstract ServerKeyExchange = sun.security.ssl.HandshakeMessage$ServerKeyExchange of sun.security.ssl.HandshakeMessage