final class sun.security.ssl.Finished$T13VerifyDataGenerator 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$T13VerifyDataGenerator
super_class: java.lang.Object
{
private static final byte[] hkdfLabel;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final byte[] hkdfContext;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc "tls13 finished"
invokevirtual java.lang.String.getBytes:()[B
putstatic sun.security.ssl.Finished$T13VerifyDataGenerator.hkdfLabel:[B
1: iconst_0
newarray 8
putstatic sun.security.ssl.Finished$T13VerifyDataGenerator.hkdfContext:[B
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/Finished$T13VerifyDataGenerator;
public byte[] createVerifyData(sun.security.ssl.HandshakeContext, boolean);
descriptor: (Lsun/security/ssl/HandshakeContext;Z)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 1
getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
1: astore 3
start local 3 2: iload 2
ifeq 4
3: aload 1
getfield sun.security.ssl.HandshakeContext.baseReadSecret:Ljavax/crypto/SecretKey;
goto 5
StackMap locals: sun.security.ssl.CipherSuite$HashAlg
StackMap stack:
4: aload 1
getfield sun.security.ssl.HandshakeContext.baseWriteSecret:Ljavax/crypto/SecretKey;
5: StackMap locals:
StackMap stack: javax.crypto.SecretKey
astore 4
start local 4 6: new sun.security.ssl.SSLBasicKeyDerivation
dup
7: aload 4
aload 3
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
8: getstatic sun.security.ssl.Finished$T13VerifyDataGenerator.hkdfLabel:[B
getstatic sun.security.ssl.Finished$T13VerifyDataGenerator.hkdfContext:[B
aload 3
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
9: invokespecial sun.security.ssl.SSLBasicKeyDerivation.<init>:(Ljavax/crypto/SecretKey;Ljava/lang/String;[B[BI)V
astore 5
start local 5 10: new sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec
dup
aload 3
getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
invokespecial sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec.<init>:(I)V
11: astore 6
start local 6 12: aload 5
ldc "TlsFinishedSecret"
aload 6
invokevirtual sun.security.ssl.SSLBasicKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
13: astore 7
start local 7 14: new java.lang.StringBuilder
dup
ldc "Hmac"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
ldc "-"
ldc ""
invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
15: astore 8
start local 8 16: aload 8
invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
astore 9
start local 9 17: aload 9
aload 7
invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
18: aload 9
aload 1
getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
invokevirtual javax.crypto.Mac.doFinal:([B)[B
19: areturn
end local 9 20: StackMap locals: sun.security.ssl.Finished$T13VerifyDataGenerator sun.security.ssl.HandshakeContext int sun.security.ssl.CipherSuite$HashAlg javax.crypto.SecretKey sun.security.ssl.SSLBasicKeyDerivation java.security.spec.AlgorithmParameterSpec javax.crypto.SecretKey java.lang.String
StackMap stack: java.security.GeneralSecurityException
astore 9
start local 9 21: new java.security.ProviderException
dup
22: ldc "Failed to generate verify_data"
aload 9
23: invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
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 24 0 this Lsun/security/ssl/Finished$T13VerifyDataGenerator;
0 24 1 context Lsun/security/ssl/HandshakeContext;
0 24 2 isValidation Z
2 24 3 hashAlg Lsun/security/ssl/CipherSuite$HashAlg;
6 24 4 secret Ljavax/crypto/SecretKey;
10 24 5 kdf Lsun/security/ssl/SSLBasicKeyDerivation;
12 24 6 keySpec Ljava/security/spec/AlgorithmParameterSpec;
14 24 7 finishedSecret Ljavax/crypto/SecretKey;
16 24 8 hmacAlg Ljava/lang/String;
17 20 9 hmac Ljavax/crypto/Mac;
21 24 9 ex Ljava/security/GeneralSecurityException;
Exception table:
from to target type
16 19 20 Class java.security.NoSuchAlgorithmException
16 19 20 Class java.security.InvalidKeyException
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 T13VerifyDataGenerator = sun.security.ssl.Finished$T13VerifyDataGenerator of sun.security.ssl.Finished
abstract VerifyDataGenerator = sun.security.ssl.Finished$VerifyDataGenerator of sun.security.ssl.Finished
SecretSizeSpec = sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec of sun.security.ssl.SSLBasicKeyDerivation