final class sun.security.ssl.Finished$T10VerifyDataGenerator implements sun.security.ssl.Finished$VerifyDataGenerator
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.Finished$T10VerifyDataGenerator
super_class: java.lang.Object
{
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // sun.security.ssl.Finished$T10VerifyDataGenerator this
0: .line 227
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // sun.security.ssl.Finished$T10VerifyDataGenerator this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/Finished$T10VerifyDataGenerator;
public byte[] createVerifyData(sun.security.ssl.HandshakeContext, boolean);
descriptor: (Lsun/security/ssl/HandshakeContext;Z)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=14, args_size=3
start local 0 // sun.security.ssl.Finished$T10VerifyDataGenerator this
start local 1 // sun.security.ssl.HandshakeContext context
start local 2 // boolean isValidation
0: .line 231
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
astore 3 /* handshakeHash */
start local 3 // sun.security.ssl.HandshakeHash handshakeHash
1: .line 233
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
invokevirtual sun.security.ssl.SSLSessionImpl.getMasterSecret:()Ljavax/crypto/SecretKey;
2: .line 232
astore 4 /* masterSecretKey */
start local 4 // javax.crypto.SecretKey masterSecretKey
3: .line 236
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
ifeq 4
iload 2 /* isValidation */
ifeq 6
4: .line 237
StackMap locals: sun.security.ssl.HandshakeHash javax.crypto.SecretKey
StackMap stack:
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
ifne 5
iload 2 /* isValidation */
ifne 6
5: .line 235
StackMap locals:
StackMap stack:
iconst_0
goto 7
StackMap locals:
StackMap stack:
6: iconst_1
StackMap locals:
StackMap stack: int
7: istore 5 /* useClientLabel */
start local 5 // boolean useClientLabel
8: .line 239
iload 5 /* useClientLabel */
ifeq 11
9: .line 240
ldc "client finished"
astore 6 /* tlsLabel */
start local 6 // java.lang.String tlsLabel
10: .line 241
goto 12
end local 6 // java.lang.String tlsLabel
11: .line 242
StackMap locals: int
StackMap stack:
ldc "server finished"
astore 6 /* tlsLabel */
start local 6 // java.lang.String tlsLabel
12: .line 246
StackMap locals: java.lang.String
StackMap stack:
aload 3 /* handshakeHash */
invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
astore 7 /* seed */
start local 7 // byte[] seed
13: .line 247
ldc "SunTlsPrf"
astore 8 /* prfAlg */
start local 8 // java.lang.String prfAlg
14: .line 248
getstatic sun.security.ssl.CipherSuite$HashAlg.H_NONE:Lsun/security/ssl/CipherSuite$HashAlg;
astore 9 /* hashAlg */
start local 9 // sun.security.ssl.CipherSuite$HashAlg hashAlg
15: .line 257
new sun.security.internal.spec.TlsPrfParameterSpec
dup
16: .line 258
aload 4 /* masterSecretKey */
aload 6 /* tlsLabel */
aload 7 /* seed */
bipush 12
17: .line 259
aload 9 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
aload 9 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
aload 9 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.blockSize:I
18: .line 257
invokespecial sun.security.internal.spec.TlsPrfParameterSpec.<init>:(Ljavax/crypto/SecretKey;Ljava/lang/String;[BILjava/lang/String;II)V
astore 10 /* spec */
start local 10 // sun.security.internal.spec.TlsPrfParameterSpec spec
19: .line 260
aload 8 /* prfAlg */
invokestatic javax.crypto.KeyGenerator.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
astore 11 /* kg */
start local 11 // javax.crypto.KeyGenerator kg
20: .line 261
aload 11 /* kg */
aload 10 /* spec */
invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
21: .line 262
aload 11 /* kg */
invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
astore 12 /* prfKey */
start local 12 // javax.crypto.SecretKey prfKey
22: .line 263
ldc "RAW"
aload 12 /* prfKey */
invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 28
23: .line 264
new java.security.ProviderException
dup
24: .line 265
new java.lang.StringBuilder
dup
ldc "Invalid PRF output, format must be RAW. Format received: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
25: .line 266
aload 12 /* prfKey */
invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
26: .line 265
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
27: .line 264
invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
athrow
28: .line 268
StackMap locals: sun.security.ssl.Finished$T10VerifyDataGenerator sun.security.ssl.HandshakeContext int sun.security.ssl.HandshakeHash javax.crypto.SecretKey int java.lang.String byte[] java.lang.String sun.security.ssl.CipherSuite$HashAlg sun.security.internal.spec.TlsPrfParameterSpec javax.crypto.KeyGenerator javax.crypto.SecretKey
StackMap stack:
aload 12 /* prfKey */
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
astore 13 /* finished */
start local 13 // byte[] finished
29: .line 269
aload 13 /* finished */
30: areturn
end local 13 // byte[] finished
end local 12 // javax.crypto.SecretKey prfKey
end local 11 // javax.crypto.KeyGenerator kg
end local 10 // sun.security.internal.spec.TlsPrfParameterSpec spec
end local 9 // sun.security.ssl.CipherSuite$HashAlg hashAlg
end local 8 // java.lang.String prfAlg
end local 7 // byte[] seed
31: .line 270
StackMap locals: sun.security.ssl.Finished$T10VerifyDataGenerator sun.security.ssl.HandshakeContext int sun.security.ssl.HandshakeHash javax.crypto.SecretKey int java.lang.String
StackMap stack: java.security.GeneralSecurityException
astore 7 /* e */
start local 7 // java.security.GeneralSecurityException e
32: .line 271
new java.lang.RuntimeException
dup
ldc "PRF failed"
aload 7 /* e */
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 // java.security.GeneralSecurityException e
end local 6 // java.lang.String tlsLabel
end local 5 // boolean useClientLabel
end local 4 // javax.crypto.SecretKey masterSecretKey
end local 3 // sun.security.ssl.HandshakeHash handshakeHash
end local 2 // boolean isValidation
end local 1 // sun.security.ssl.HandshakeContext context
end local 0 // sun.security.ssl.Finished$T10VerifyDataGenerator this
LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lsun/security/ssl/Finished$T10VerifyDataGenerator;
0 33 1 context Lsun/security/ssl/HandshakeContext;
0 33 2 isValidation Z
1 33 3 handshakeHash Lsun/security/ssl/HandshakeHash;
3 33 4 masterSecretKey Ljavax/crypto/SecretKey;
8 33 5 useClientLabel Z
10 11 6 tlsLabel Ljava/lang/String;
12 33 6 tlsLabel Ljava/lang/String;
13 31 7 seed [B
14 31 8 prfAlg Ljava/lang/String;
15 31 9 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
19 31 10 spec Lsun/security/internal/spec/TlsPrfParameterSpec;
20 31 11 kg Ljavax/crypto/KeyGenerator;
22 31 12 prfKey Ljavax/crypto/SecretKey;
29 31 13 finished [B
32 33 7 e Ljava/security/GeneralSecurityException;
Exception table:
from to target type
12 30 31 Class java.security.GeneralSecurityException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
isValidation
}
SourceFile: "Finished.java"
NestHost: sun.security.ssl.Finished
InnerClasses:
final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
private final T10VerifyDataGenerator = sun.security.ssl.Finished$T10VerifyDataGenerator of sun.security.ssl.Finished
abstract VerifyDataGenerator = sun.security.ssl.Finished$VerifyDataGenerator of sun.security.ssl.Finished