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 222
            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 226
            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 228
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.getMasterSecret:()Ljavax/crypto/SecretKey;
         2: .line 227
            astore 4 /* masterSecretKey */
        start local 4 // javax.crypto.SecretKey masterSecretKey
         3: .line 231
            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 232
      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 230
      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 234
            iload 5 /* useClientLabel */
            ifeq 11
         9: .line 235
            ldc "client finished"
            astore 6 /* tlsLabel */
        start local 6 // java.lang.String tlsLabel
        10: .line 236
            goto 12
        end local 6 // java.lang.String tlsLabel
        11: .line 237
      StackMap locals: int
      StackMap stack:
            ldc "server finished"
            astore 6 /* tlsLabel */
        start local 6 // java.lang.String tlsLabel
        12: .line 241
      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 242
            ldc "SunTlsPrf"
            astore 8 /* prfAlg */
        start local 8 // java.lang.String prfAlg
        14: .line 243
            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 252
            new sun.security.internal.spec.TlsPrfParameterSpec
            dup
        16: .line 253
            aload 4 /* masterSecretKey */
            aload 6 /* tlsLabel */
            aload 7 /* seed */
            bipush 12
        17: .line 254
            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 252
            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 255
            aload 8 /* prfAlg */
            invokestatic sun.security.ssl.JsseJce.getKeyGenerator:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
            astore 11 /* kg */
        start local 11 // javax.crypto.KeyGenerator kg
        20: .line 256
            aload 11 /* kg */
            aload 10 /* spec */
            invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
        21: .line 257
            aload 11 /* kg */
            invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
            astore 12 /* prfKey */
        start local 12 // javax.crypto.SecretKey prfKey
        22: .line 258
            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 259
            new java.security.ProviderException
            dup
        24: .line 260
            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 261
            aload 12 /* prfKey */
            invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: .line 260
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        27: .line 259
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        28: .line 263
      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 264
            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 265
      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 266
            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