final class sun.security.ssl.HandshakeMessage$Finished extends sun.security.ssl.HandshakeMessage
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.HandshakeMessage$Finished
super_class: sun.security.ssl.HandshakeMessage
{
static final int CLIENT;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 1
static final int SERVER;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final byte[] SSL_CLIENT;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final byte[] SSL_SERVER;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private byte[] verifyData;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: iconst_4
newarray 8
dup
iconst_0
bipush 67
bastore
dup
iconst_1
bipush 76
bastore
dup
iconst_2
bipush 78
bastore
dup
iconst_3
bipush 84
bastore
putstatic sun.security.ssl.HandshakeMessage$Finished.SSL_CLIENT:[B
1: iconst_4
newarray 8
dup
iconst_0
bipush 83
bastore
dup
iconst_1
bipush 82
bastore
dup
iconst_2
bipush 86
bastore
dup
iconst_3
bipush 82
bastore
putstatic sun.security.ssl.HandshakeMessage$Finished.SSL_SERVER:[B
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(sun.security.ssl.ProtocolVersion, sun.security.ssl.HandshakeHash, int, javax.crypto.SecretKey);
descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/HandshakeHash;ILjavax/crypto/SecretKey;)V
flags: (0x0000)
Code:
stack=5, locals=5, 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.<init>:()V
1: aload 0
aload 1
aload 2
iload 3
2: aload 4
3: invokestatic sun.security.ssl.HandshakeMessage$Finished.getFinished:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/HandshakeHash;ILjavax/crypto/SecretKey;)[B
putfield sun.security.ssl.HandshakeMessage$Finished.verifyData:[B
4: return
end local 4 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/HandshakeMessage$Finished;
0 5 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 5 2 handshakeHash Lsun/security/ssl/HandshakeHash;
0 5 3 sender I
0 5 4 master Ljavax/crypto/SecretKey;
MethodParameters:
Name Flags
protocolVersion
handshakeHash
sender
master
void <init>(sun.security.ssl.ProtocolVersion, sun.security.ssl.HandshakeInStream);
descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/HandshakeInStream;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial sun.security.ssl.HandshakeMessage.<init>:()V
1: aload 1
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS10:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 2
bipush 12
goto 3
StackMap locals: sun.security.ssl.HandshakeMessage$Finished sun.security.ssl.ProtocolVersion sun.security.ssl.HandshakeInStream
StackMap stack:
2: bipush 36
StackMap locals:
StackMap stack: int
3: istore 3
start local 3 4: aload 0
iload 3
newarray 8
putfield sun.security.ssl.HandshakeMessage$Finished.verifyData:[B
5: aload 2
aload 0
getfield sun.security.ssl.HandshakeMessage$Finished.verifyData:[B
invokevirtual sun.security.ssl.HandshakeInStream.read:([B)I
pop
6: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/security/ssl/HandshakeMessage$Finished;
0 7 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 7 2 input Lsun/security/ssl/HandshakeInStream;
4 7 3 msgLen I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
protocolVersion
input
boolean verify(sun.security.ssl.ProtocolVersion, sun.security.ssl.HandshakeHash, int, javax.crypto.SecretKey);
descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/HandshakeHash;ILjavax/crypto/SecretKey;)Z
flags: (0x0000)
Code:
stack=4, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
aload 2
1: iload 3
aload 4
2: invokestatic sun.security.ssl.HandshakeMessage$Finished.getFinished:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/HandshakeHash;ILjavax/crypto/SecretKey;)[B
astore 5
start local 5 3: aload 5
aload 0
getfield sun.security.ssl.HandshakeMessage$Finished.verifyData:[B
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ireturn
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 4 0 this Lsun/security/ssl/HandshakeMessage$Finished;
0 4 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 4 2 handshakeHash Lsun/security/ssl/HandshakeHash;
0 4 3 sender I
0 4 4 master Ljavax/crypto/SecretKey;
3 4 5 myFinished [B
MethodParameters:
Name Flags
protocolVersion
handshakeHash
sender
master
private static byte[] getFinished(sun.security.ssl.ProtocolVersion, sun.security.ssl.HandshakeHash, int, javax.crypto.SecretKey);
descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/HandshakeHash;ILjavax/crypto/SecretKey;)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
iconst_1
if_icmpne 4
1: getstatic sun.security.ssl.HandshakeMessage$Finished.SSL_CLIENT:[B
astore 4
start local 4 2: ldc "client finished"
astore 5
start local 5 3: goto 9
end local 5 end local 4 StackMap locals:
StackMap stack:
4: iload 2
iconst_2
if_icmpne 8
5: getstatic sun.security.ssl.HandshakeMessage$Finished.SSL_SERVER:[B
astore 4
start local 4 6: ldc "server finished"
astore 5
start local 5 7: goto 9
end local 5 end local 4 8: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Invalid sender: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
start local 4 start local 5 9: StackMap locals: byte[] java.lang.String
StackMap stack:
aload 1
invokevirtual sun.security.ssl.HandshakeHash.getMD5Clone:()Ljava/security/MessageDigest;
astore 6
start local 6 10: aload 1
invokevirtual sun.security.ssl.HandshakeHash.getSHAClone:()Ljava/security/MessageDigest;
astore 7
start local 7 11: aload 0
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS10:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 30
12: bipush 36
newarray 8
astore 8
start local 8 13: aload 6
aload 8
iconst_0
bipush 16
invokevirtual java.security.MessageDigest.digest:([BII)I
pop
14: aload 7
aload 8
bipush 16
bipush 20
invokevirtual java.security.MessageDigest.digest:([BII)I
pop
15: new sun.security.internal.spec.TlsPrfParameterSpec
dup
16: aload 3
aload 5
aload 8
bipush 12
17: invokespecial sun.security.internal.spec.TlsPrfParameterSpec.<init>:(Ljavax/crypto/SecretKey;Ljava/lang/String;[BI)V
astore 9
start local 9 18: ldc "SunTlsPrf"
invokestatic sun.security.ssl.JsseJce.getKeyGenerator:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
astore 10
start local 10 19: aload 10
aload 9
invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
20: aload 10
invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
astore 11
start local 11 21: ldc "RAW"
aload 11
invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 25
22: new java.security.ProviderException
dup
23: ldc "Invalid PRF output, format must be RAW"
24: invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
athrow
25: StackMap locals: sun.security.ssl.ProtocolVersion sun.security.ssl.HandshakeHash int javax.crypto.SecretKey byte[] java.lang.String java.security.MessageDigest java.security.MessageDigest byte[] sun.security.internal.spec.TlsPrfParameterSpec javax.crypto.KeyGenerator javax.crypto.SecretKey
StackMap stack:
aload 11
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
astore 12
start local 12 26: aload 12
27: areturn
end local 12 end local 11 end local 10 end local 9 end local 8 28: StackMap locals: sun.security.ssl.ProtocolVersion sun.security.ssl.HandshakeHash int javax.crypto.SecretKey byte[] java.lang.String java.security.MessageDigest java.security.MessageDigest
StackMap stack: java.security.GeneralSecurityException
astore 8
start local 8 29: new java.lang.RuntimeException
dup
ldc "PRF failed"
aload 8
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 8 30: StackMap locals:
StackMap stack:
aload 6
aload 4
getstatic sun.security.ssl.HandshakeMessage$Finished.MD5_pad1:[B
getstatic sun.security.ssl.HandshakeMessage$Finished.MD5_pad2:[B
aload 3
invokestatic sun.security.ssl.HandshakeMessage$Finished.updateDigest:(Ljava/security/MessageDigest;[B[B[BLjavax/crypto/SecretKey;)V
31: aload 7
aload 4
getstatic sun.security.ssl.HandshakeMessage$Finished.SHA_pad1:[B
getstatic sun.security.ssl.HandshakeMessage$Finished.SHA_pad2:[B
aload 3
invokestatic sun.security.ssl.HandshakeMessage$Finished.updateDigest:(Ljava/security/MessageDigest;[B[B[BLjavax/crypto/SecretKey;)V
32: bipush 36
newarray 8
astore 8
start local 8 33: aload 6
aload 8
iconst_0
bipush 16
invokevirtual java.security.MessageDigest.digest:([BII)I
pop
34: aload 7
aload 8
bipush 16
bipush 20
invokevirtual java.security.MessageDigest.digest:([BII)I
pop
35: goto 38
StackMap locals: sun.security.ssl.ProtocolVersion sun.security.ssl.HandshakeHash int javax.crypto.SecretKey byte[] java.lang.String java.security.MessageDigest java.security.MessageDigest byte[]
StackMap stack: java.security.DigestException
36: astore 9
start local 9 37: new java.lang.RuntimeException
dup
ldc "Digest failed"
aload 9
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 9 38: StackMap locals:
StackMap stack:
aload 8
areturn
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 39 0 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 39 1 handshakeHash Lsun/security/ssl/HandshakeHash;
0 39 2 sender I
0 39 3 masterKey Ljavax/crypto/SecretKey;
2 4 4 sslLabel [B
6 8 4 sslLabel [B
9 39 4 sslLabel [B
3 4 5 tlsLabel Ljava/lang/String;
7 8 5 tlsLabel Ljava/lang/String;
9 39 5 tlsLabel Ljava/lang/String;
10 39 6 md5Clone Ljava/security/MessageDigest;
11 39 7 shaClone Ljava/security/MessageDigest;
13 28 8 seed [B
18 28 9 spec Lsun/security/internal/spec/TlsPrfParameterSpec;
19 28 10 prf Ljavax/crypto/KeyGenerator;
21 28 11 prfKey Ljavax/crypto/SecretKey;
26 28 12 finished [B
29 30 8 e Ljava/security/GeneralSecurityException;
33 39 8 finished [B
37 38 9 e Ljava/security/DigestException;
Exception table:
from to target type
12 27 28 Class java.security.GeneralSecurityException
33 35 36 Class java.security.DigestException
MethodParameters:
Name Flags
protocolVersion
handshakeHash
sender
masterKey
private static void updateDigest(java.security.MessageDigest, byte[], byte[], byte[], javax.crypto.SecretKey);
descriptor: (Ljava/security/MessageDigest;[B[B[BLjavax/crypto/SecretKey;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
invokevirtual java.security.MessageDigest.update:([B)V
1: aload 0
aload 2
aload 3
aload 4
invokestatic sun.security.ssl.HandshakeMessage$CertificateVerify.updateDigest:(Ljava/security/MessageDigest;[B[BLjavax/crypto/SecretKey;)V
2: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 md Ljava/security/MessageDigest;
0 3 1 sender [B
0 3 2 pad1 [B
0 3 3 pad2 [B
0 3 4 masterSecret Ljavax/crypto/SecretKey;
MethodParameters:
Name Flags
md
sender
pad1
pad2
masterSecret
byte[] getVerifyData();
descriptor: ()[B
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.HandshakeMessage$Finished.verifyData:[B
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/HandshakeMessage$Finished;
int messageType();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: bipush 20
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/HandshakeMessage$Finished;
int messageLength();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.HandshakeMessage$Finished.verifyData:[B
arraylength
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/HandshakeMessage$Finished;
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$Finished.verifyData:[B
invokevirtual sun.security.ssl.HandshakeOutStream.write:([B)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/HandshakeMessage$Finished;
0 2 1 out Lsun/security/ssl/HandshakeOutStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
out
void print(java.io.PrintStream);
descriptor: (Ljava/io/PrintStream;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "*** Finished"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
1: getstatic sun.security.ssl.HandshakeMessage$Finished.debug:Lsun/security/ssl/Debug;
ifnull 4
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 4
2: aload 1
ldc "verify_data"
aload 0
getfield sun.security.ssl.HandshakeMessage$Finished.verifyData:[B
invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
3: aload 1
ldc "***"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/HandshakeMessage$Finished;
0 5 1 s Ljava/io/PrintStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
final CertificateVerify = sun.security.ssl.HandshakeMessage$CertificateVerify of sun.security.ssl.HandshakeMessage
final Finished = sun.security.ssl.HandshakeMessage$Finished of sun.security.ssl.HandshakeMessage