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: .line 331
            ldc "tls13 finished"
            invokevirtual java.lang.String.getBytes:()[B
            putstatic sun.security.ssl.Finished$T13VerifyDataGenerator.hkdfLabel:[B
         1: .line 332
            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 // sun.security.ssl.Finished$T13VerifyDataGenerator this
         0: .line 330
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.ssl.Finished$T13VerifyDataGenerator this
      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 // sun.security.ssl.Finished$T13VerifyDataGenerator this
        start local 1 // sun.security.ssl.HandshakeContext context
        start local 2 // boolean isValidation
         0: .line 339
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
         1: .line 338
            astore 3 /* hashAlg */
        start local 3 // sun.security.ssl.CipherSuite$HashAlg hashAlg
         2: .line 340
            iload 2 /* isValidation */
            ifeq 4
         3: .line 341
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.baseReadSecret:Ljavax/crypto/SecretKey;
            goto 5
      StackMap locals: sun.security.ssl.CipherSuite$HashAlg
      StackMap stack:
         4: aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.baseWriteSecret:Ljavax/crypto/SecretKey;
         5: .line 340
      StackMap locals:
      StackMap stack: javax.crypto.SecretKey
            astore 4 /* secret */
        start local 4 // javax.crypto.SecretKey secret
         6: .line 342
            new sun.security.ssl.SSLBasicKeyDerivation
            dup
         7: .line 343
            aload 4 /* secret */
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
         8: .line 344
            getstatic sun.security.ssl.Finished$T13VerifyDataGenerator.hkdfLabel:[B
            getstatic sun.security.ssl.Finished$T13VerifyDataGenerator.hkdfContext:[B
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
         9: .line 342
            invokespecial sun.security.ssl.SSLBasicKeyDerivation.<init>:(Ljavax/crypto/SecretKey;Ljava/lang/String;[B[BI)V
            astore 5 /* kdf */
        start local 5 // sun.security.ssl.SSLBasicKeyDerivation kdf
        10: .line 346
            new sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec
            dup
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            invokespecial sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec.<init>:(I)V
        11: .line 345
            astore 6 /* keySpec */
        start local 6 // java.security.spec.AlgorithmParameterSpec keySpec
        12: .line 348
            aload 5 /* kdf */
            ldc "TlsFinishedSecret"
            aload 6 /* keySpec */
            invokevirtual sun.security.ssl.SSLBasicKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
        13: .line 347
            astore 7 /* finishedSecret */
        start local 7 // javax.crypto.SecretKey finishedSecret
        14: .line 351
            new java.lang.StringBuilder
            dup
            ldc "Hmac"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* hashAlg */
            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: .line 350
            astore 8 /* hmacAlg */
        start local 8 // java.lang.String hmacAlg
        16: .line 353
            aload 8 /* hmacAlg */
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 9 /* hmac */
        start local 9 // javax.crypto.Mac hmac
        17: .line 354
            aload 9 /* hmac */
            aload 7 /* finishedSecret */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
        18: .line 355
            aload 9 /* hmac */
            aload 1 /* context */
            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 // javax.crypto.Mac hmac
        20: .line 356
      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 /* ex */
        start local 9 // java.security.GeneralSecurityException ex
        21: .line 357
            new java.security.ProviderException
            dup
        22: .line 358
            ldc "Failed to generate verify_data"
            aload 9 /* ex */
        23: .line 357
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 9 // java.security.GeneralSecurityException ex
        end local 8 // java.lang.String hmacAlg
        end local 7 // javax.crypto.SecretKey finishedSecret
        end local 6 // java.security.spec.AlgorithmParameterSpec keySpec
        end local 5 // sun.security.ssl.SSLBasicKeyDerivation kdf
        end local 4 // javax.crypto.SecretKey secret
        end local 3 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 2 // boolean isValidation
        end local 1 // sun.security.ssl.HandshakeContext context
        end local 0 // sun.security.ssl.Finished$T13VerifyDataGenerator this
      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