final class sun.security.ssl.HandshakeMessage$ECDH_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$ECDH_ServerKeyExchange
super_class: sun.security.ssl.HandshakeMessage$ServerKeyExchange
{
private static final int CURVE_EXPLICIT_PRIME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int CURVE_EXPLICIT_CHAR2;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int CURVE_NAMED_CURVE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private int curveId;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private byte[] pointBytes;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] signatureBytes;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private java.security.interfaces.ECPublicKey publicKey;
descriptor: Ljava/security/interfaces/ECPublicKey;
flags: (0x0002) ACC_PRIVATE
void <init>(sun.security.ssl.ECDHCrypt, java.security.PrivateKey, byte[], byte[], java.security.SecureRandom);
descriptor: (Lsun/security/ssl/ECDHCrypt;Ljava/security/PrivateKey;[B[BLjava/security/SecureRandom;)V
flags: (0x0000)
Code:
stack=4, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
1: aload 0
aload 1
invokevirtual sun.security.ssl.ECDHCrypt.getPublicKey:()Ljava/security/PublicKey;
checkcast java.security.interfaces.ECPublicKey
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
2: aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
astore 6
start local 6 3: aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
invokeinterface java.security.interfaces.ECPublicKey.getW:()Ljava/security/spec/ECPoint;
astore 7
start local 7 4: aload 0
aload 7
aload 6
invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
invokestatic sun.security.ssl.JsseJce.encodePoint:(Ljava/security/spec/ECPoint;Ljava/security/spec/EllipticCurve;)[B
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
5: aload 0
aload 6
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getCurveIndex:(Ljava/security/spec/ECParameterSpec;)I
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
6: aload 2
ifnonnull 8
7: return
8: StackMap locals: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange sun.security.ssl.ECDHCrypt java.security.PrivateKey byte[] byte[] java.security.SecureRandom java.security.spec.ECParameterSpec java.security.spec.ECPoint
StackMap stack:
aload 2
invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
invokestatic sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
astore 8
start local 8 9: aload 8
aload 2
aload 5
invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V
10: aload 0
aload 8
aload 3
aload 4
invokevirtual sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.updateSignature:(Ljava/security/Signature;[B[B)V
11: aload 0
aload 8
invokevirtual java.security.Signature.sign:()[B
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
12: 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 13 0 this Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
0 13 1 obj Lsun/security/ssl/ECDHCrypt;
0 13 2 privateKey Ljava/security/PrivateKey;
0 13 3 clntNonce [B
0 13 4 svrNonce [B
0 13 5 sr Ljava/security/SecureRandom;
3 13 6 params Ljava/security/spec/ECParameterSpec;
4 13 7 point Ljava/security/spec/ECPoint;
9 13 8 sig Ljava/security/Signature;
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
obj
privateKey
clntNonce
svrNonce
sr
void <init>(sun.security.ssl.HandshakeInStream, java.security.PublicKey, byte[], byte[]);
descriptor: (Lsun/security/ssl/HandshakeInStream;Ljava/security/PublicKey;[B[B)V
flags: (0x0000)
Code:
stack=6, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
1: aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
istore 5
start local 5 2: iload 5
iconst_3
if_icmpne 12
3: aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getInt16:()I
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
4: aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.isSupported:(I)Z
ifne 6
5: new javax.net.ssl.SSLHandshakeException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported curveId: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] int
StackMap stack:
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getCurveOid:(I)Ljava/lang/String;
astore 7
start local 7 7: aload 7
ifnonnull 9
8: new javax.net.ssl.SSLHandshakeException
dup
new java.lang.StringBuilder
dup
ldc "Unknown named curve: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] int top java.lang.String
StackMap stack:
aload 7
invokestatic sun.security.ssl.JsseJce.getECParameterSpec:(Ljava/lang/String;)Ljava/security/spec/ECParameterSpec;
astore 6
start local 6 10: aload 6
ifnonnull 13
11: new javax.net.ssl.SSLHandshakeException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported curve: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
end local 7 end local 6 12: StackMap locals: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] int
StackMap stack:
new javax.net.ssl.SSLHandshakeException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported ECCurveType: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
start local 6 13: StackMap locals: java.security.spec.ECParameterSpec
StackMap stack:
aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
14: aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
aload 6
invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
invokestatic sun.security.ssl.JsseJce.decodePoint:([BLjava/security/spec/EllipticCurve;)Ljava/security/spec/ECPoint;
astore 7
start local 7 15: ldc "EC"
invokestatic sun.security.ssl.JsseJce.getKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
astore 8
start local 8 16: aload 0
aload 8
new java.security.spec.ECPublicKeySpec
dup
aload 7
aload 6
invokespecial java.security.spec.ECPublicKeySpec.<init>:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
checkcast java.security.interfaces.ECPublicKey
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
17: aload 2
ifnonnull 19
18: return
19: StackMap locals: java.security.spec.ECPoint java.security.KeyFactory
StackMap stack:
aload 0
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
20: aload 2
invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
invokestatic sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
astore 9
start local 9 21: aload 9
aload 2
invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
22: aload 0
aload 9
aload 3
aload 4
invokevirtual sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.updateSignature:(Ljava/security/Signature;[B[B)V
23: aload 9
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
invokevirtual java.security.Signature.verify:([B)Z
ifne 27
24: new javax.net.ssl.SSLKeyException
dup
25: ldc "Invalid signature on ECDH server key exchange message"
26: invokespecial javax.net.ssl.SSLKeyException.<init>:(Ljava/lang/String;)V
athrow
27: StackMap locals: java.security.Signature
StackMap stack:
return
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 28 0 this Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
0 28 1 input Lsun/security/ssl/HandshakeInStream;
0 28 2 signingKey Ljava/security/PublicKey;
0 28 3 clntNonce [B
0 28 4 svrNonce [B
2 28 5 curveType I
10 12 6 parameters Ljava/security/spec/ECParameterSpec;
13 28 6 parameters Ljava/security/spec/ECParameterSpec;
7 12 7 curveOid Ljava/lang/String;
15 28 7 point Ljava/security/spec/ECPoint;
16 28 8 factory Ljava/security/KeyFactory;
21 28 9 sig Ljava/security/Signature;
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
MethodParameters:
Name Flags
input
signingKey
clntNonce
svrNonce
java.security.interfaces.ECPublicKey getPublicKey();
descriptor: ()Ljava/security/interfaces/ECPublicKey;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
private static java.security.Signature getSignature(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/security/Signature;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: ldc "EC"
aload 0
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 2
1: ldc "SHA1withECDSA"
invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
areturn
2: StackMap locals:
StackMap stack:
ldc "RSA"
aload 0
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 4
3: invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
areturn
4: StackMap locals:
StackMap stack:
new java.security.NoSuchAlgorithmException
dup
ldc "neither an RSA or a EC key"
invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 keyAlgorithm Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
keyAlgorithm
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
iconst_3
invokevirtual java.security.Signature.update:(B)V
3: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
bipush 8
ishr
i2b
invokevirtual java.security.Signature.update:(B)V
4: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
i2b
invokevirtual java.security.Signature.update:(B)V
5: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
arraylength
i2b
invokevirtual java.security.Signature.update:(B)V
6: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
invokevirtual java.security.Signature.update:([B)V
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
0 8 1 sig Ljava/security/Signature;
0 8 2 clntNonce [B
0 8 3 svrNonce [B
Exceptions:
throws java.security.SignatureException
MethodParameters:
Name Flags
sig
clntNonce
svrNonce
int messageLength();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
ifnonnull 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: iconst_2
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
arraylength
iadd
StackMap locals:
StackMap stack: int
2: istore 1
start local 1 3: iconst_4
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
arraylength
iadd
iload 1
iadd
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
3 4 1 sigLen 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
iconst_3
invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
1: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
2: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
3: aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
ifnull 5
4: aload 1
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
0 6 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 "*** ECDH ServerKeyExchange"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
1: getstatic sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.debug:Lsun/security/ssl/Debug;
ifnull 3
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 3
2: aload 1
new java.lang.StringBuilder
dup
ldc "Server key: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
0 4 1 s Ljava/io/PrintStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
final ECDH_ServerKeyExchange = sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange of sun.security.ssl.HandshakeMessage
abstract ServerKeyExchange = sun.security.ssl.HandshakeMessage$ServerKeyExchange of sun.security.ssl.HandshakeMessage