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