final class sun.security.ssl.Finished$T12VerifyDataGenerator 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$T12VerifyDataGenerator
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$T12VerifyDataGenerator this
0: .line 278
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // sun.security.ssl.Finished$T12VerifyDataGenerator this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/Finished$T12VerifyDataGenerator;
public byte[] createVerifyData(sun.security.ssl.HandshakeContext, boolean);
descriptor: (Lsun/security/ssl/HandshakeContext;Z)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=15, args_size=3
start local 0 // sun.security.ssl.Finished$T12VerifyDataGenerator this
start local 1 // sun.security.ssl.HandshakeContext context
start local 2 // boolean isValidation
0: .line 282
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
astore 3 /* cipherSuite */
start local 3 // sun.security.ssl.CipherSuite cipherSuite
1: .line 283
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
astore 4 /* handshakeHash */
start local 4 // sun.security.ssl.HandshakeHash handshakeHash
2: .line 285
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
invokevirtual sun.security.ssl.SSLSessionImpl.getMasterSecret:()Ljavax/crypto/SecretKey;
3: .line 284
astore 5 /* masterSecretKey */
start local 5 // javax.crypto.SecretKey masterSecretKey
4: .line 288
aload 1 /* context */
getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
ifeq 5
iload 2 /* isValidation */
ifeq 7
5: .line 289
StackMap locals: sun.security.ssl.CipherSuite 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 6
iload 2 /* isValidation */
ifne 7
6: .line 287
StackMap locals:
StackMap stack:
iconst_0
goto 8
StackMap locals:
StackMap stack:
7: iconst_1
StackMap locals:
StackMap stack: int
8: istore 6 /* useClientLabel */
start local 6 // boolean useClientLabel
9: .line 291
iload 6 /* useClientLabel */
ifeq 12
10: .line 292
ldc "client finished"
astore 7 /* tlsLabel */
start local 7 // java.lang.String tlsLabel
11: .line 293
goto 13
end local 7 // java.lang.String tlsLabel
12: .line 294
StackMap locals: int
StackMap stack:
ldc "server finished"
astore 7 /* tlsLabel */
start local 7 // java.lang.String tlsLabel
13: .line 298
StackMap locals: java.lang.String
StackMap stack:
aload 4 /* handshakeHash */
invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
astore 8 /* seed */
start local 8 // byte[] seed
14: .line 299
ldc "SunTls12Prf"
astore 9 /* prfAlg */
start local 9 // java.lang.String prfAlg
15: .line 300
aload 3 /* cipherSuite */
getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
astore 10 /* hashAlg */
start local 10 // sun.security.ssl.CipherSuite$HashAlg hashAlg
16: .line 309
new sun.security.internal.spec.TlsPrfParameterSpec
dup
17: .line 310
aload 5 /* masterSecretKey */
aload 7 /* tlsLabel */
aload 8 /* seed */
bipush 12
18: .line 311
aload 10 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
aload 10 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
aload 10 /* hashAlg */
getfield sun.security.ssl.CipherSuite$HashAlg.blockSize:I
19: .line 309
invokespecial sun.security.internal.spec.TlsPrfParameterSpec.<init>:(Ljavax/crypto/SecretKey;Ljava/lang/String;[BILjava/lang/String;II)V
astore 11 /* spec */
start local 11 // sun.security.internal.spec.TlsPrfParameterSpec spec
20: .line 312
aload 9 /* prfAlg */
invokestatic javax.crypto.KeyGenerator.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
astore 12 /* kg */
start local 12 // javax.crypto.KeyGenerator kg
21: .line 313
aload 12 /* kg */
aload 11 /* spec */
invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
22: .line 314
aload 12 /* kg */
invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
astore 13 /* prfKey */
start local 13 // javax.crypto.SecretKey prfKey
23: .line 315
ldc "RAW"
aload 13 /* prfKey */
invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 29
24: .line 316
new java.security.ProviderException
dup
25: .line 317
new java.lang.StringBuilder
dup
ldc "Invalid PRF output, format must be RAW. Format received: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
26: .line 318
aload 13 /* prfKey */
invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27: .line 317
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
28: .line 316
invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
athrow
29: .line 320
StackMap locals: sun.security.ssl.Finished$T12VerifyDataGenerator sun.security.ssl.HandshakeContext int sun.security.ssl.CipherSuite 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 13 /* prfKey */
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
astore 14 /* finished */
start local 14 // byte[] finished
30: .line 321
aload 14 /* finished */
31: areturn
end local 14 // byte[] finished
end local 13 // javax.crypto.SecretKey prfKey
end local 12 // javax.crypto.KeyGenerator kg
end local 11 // sun.security.internal.spec.TlsPrfParameterSpec spec
end local 10 // sun.security.ssl.CipherSuite$HashAlg hashAlg
end local 9 // java.lang.String prfAlg
end local 8 // byte[] seed
32: .line 322
StackMap locals: sun.security.ssl.Finished$T12VerifyDataGenerator sun.security.ssl.HandshakeContext int sun.security.ssl.CipherSuite sun.security.ssl.HandshakeHash javax.crypto.SecretKey int java.lang.String
StackMap stack: java.security.GeneralSecurityException
astore 8 /* e */
start local 8 // java.security.GeneralSecurityException e
33: .line 323
new java.lang.RuntimeException
dup
ldc "PRF failed"
aload 8 /* e */
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 8 // java.security.GeneralSecurityException e
end local 7 // java.lang.String tlsLabel
end local 6 // boolean useClientLabel
end local 5 // javax.crypto.SecretKey masterSecretKey
end local 4 // sun.security.ssl.HandshakeHash handshakeHash
end local 3 // sun.security.ssl.CipherSuite cipherSuite
end local 2 // boolean isValidation
end local 1 // sun.security.ssl.HandshakeContext context
end local 0 // sun.security.ssl.Finished$T12VerifyDataGenerator this
LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lsun/security/ssl/Finished$T12VerifyDataGenerator;
0 34 1 context Lsun/security/ssl/HandshakeContext;
0 34 2 isValidation Z
1 34 3 cipherSuite Lsun/security/ssl/CipherSuite;
2 34 4 handshakeHash Lsun/security/ssl/HandshakeHash;
4 34 5 masterSecretKey Ljavax/crypto/SecretKey;
9 34 6 useClientLabel Z
11 12 7 tlsLabel Ljava/lang/String;
13 34 7 tlsLabel Ljava/lang/String;
14 32 8 seed [B
15 32 9 prfAlg Ljava/lang/String;
16 32 10 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
20 32 11 spec Lsun/security/internal/spec/TlsPrfParameterSpec;
21 32 12 kg Ljavax/crypto/KeyGenerator;
23 32 13 prfKey Ljavax/crypto/SecretKey;
30 32 14 finished [B
33 34 8 e Ljava/security/GeneralSecurityException;
Exception table:
from to target type
13 31 32 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 T12VerifyDataGenerator = sun.security.ssl.Finished$T12VerifyDataGenerator of sun.security.ssl.Finished
abstract VerifyDataGenerator = sun.security.ssl.Finished$VerifyDataGenerator of sun.security.ssl.Finished