abstract class com.sun.crypto.provider.TlsPrfGenerator extends javax.crypto.KeyGeneratorSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.crypto.provider.TlsPrfGenerator
  super_class: javax.crypto.KeyGeneratorSpi
{
  private static final byte[] B0;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final byte[] LABEL_MASTER_SECRET;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] LABEL_EXTENDED_MASTER_SECRET;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] LABEL_KEY_EXPANSION;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] LABEL_CLIENT_WRITE_KEY;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] LABEL_SERVER_WRITE_KEY;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final byte[] LABEL_IV_BLOCK;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final byte[] HMAC_ipad64;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final byte[] HMAC_ipad128;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final byte[] HMAC_opad64;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final byte[] HMAC_opad128;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final byte[][] SSL3_CONST;
    descriptor: [[B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final java.lang.String MSG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"

  private sun.security.internal.spec.TlsPrfParameterSpec spec;
    descriptor: Lsun/security/internal/spec/TlsPrfParameterSpec;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 55
            iconst_0
            newarray 8
            putstatic com.sun.crypto.provider.TlsPrfGenerator.B0:[B
         1: .line 58
            bipush 13
            newarray 8
            dup
            iconst_0
            bipush 109
            bastore
            dup
            iconst_1
            bipush 97
            bastore
            dup
            iconst_2
            bipush 115
            bastore
            dup
            iconst_3
            bipush 116
            bastore
            dup
            iconst_4
            bipush 101
            bastore
            dup
            iconst_5
            bipush 114
            bastore
            dup
            bipush 6
            bipush 32
            bastore
            dup
            bipush 7
            bipush 115
            bastore
            dup
            bipush 8
            bipush 101
            bastore
            dup
            bipush 9
            bipush 99
            bastore
            dup
            bipush 10
            bipush 114
            bastore
            dup
            bipush 11
            bipush 101
            bastore
            dup
            bipush 12
            bipush 116
            bastore
         2: .line 57
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_MASTER_SECRET:[B
         3: .line 62
            bipush 22
            newarray 8
            dup
            iconst_0
            bipush 101
            bastore
            dup
            iconst_1
            bipush 120
            bastore
            dup
            iconst_2
            bipush 116
            bastore
            dup
            iconst_3
            bipush 101
            bastore
            dup
            iconst_4
            bipush 110
            bastore
            dup
            iconst_5
            bipush 100
            bastore
            dup
            bipush 6
            bipush 101
            bastore
            dup
            bipush 7
            bipush 100
            bastore
            dup
            bipush 8
            bipush 32
            bastore
            dup
            bipush 9
            bipush 109
            bastore
            dup
            bipush 10
            bipush 97
            bastore
            dup
            bipush 11
            bipush 115
            bastore
            dup
            bipush 12
            bipush 116
            bastore
            dup
            bipush 13
         4: .line 63
            bipush 101
            bastore
            dup
            bipush 14
            bipush 114
            bastore
            dup
            bipush 15
            bipush 32
            bastore
            dup
            bipush 16
            bipush 115
            bastore
            dup
            bipush 17
            bipush 101
            bastore
            dup
            bipush 18
            bipush 99
            bastore
            dup
            bipush 19
            bipush 114
            bastore
            dup
            bipush 20
            bipush 101
            bastore
            dup
            bipush 21
            bipush 116
            bastore
         5: .line 60
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_EXTENDED_MASTER_SECRET:[B
         6: .line 66
            bipush 13
            newarray 8
            dup
            iconst_0
            bipush 107
            bastore
            dup
            iconst_1
            bipush 101
            bastore
            dup
            iconst_2
            bipush 121
            bastore
            dup
            iconst_3
            bipush 32
            bastore
            dup
            iconst_4
            bipush 101
            bastore
            dup
            iconst_5
            bipush 120
            bastore
            dup
            bipush 6
            bipush 112
            bastore
            dup
            bipush 7
            bipush 97
            bastore
            dup
            bipush 8
            bipush 110
            bastore
            dup
            bipush 9
            bipush 115
            bastore
            dup
            bipush 10
            bipush 105
            bastore
            dup
            bipush 11
            bipush 111
            bastore
            dup
            bipush 12
            bipush 110
            bastore
         7: .line 65
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_KEY_EXPANSION:[B
         8: .line 69
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 99
            bastore
            dup
            iconst_1
            bipush 108
            bastore
            dup
            iconst_2
            bipush 105
            bastore
            dup
            iconst_3
            bipush 101
            bastore
            dup
            iconst_4
            bipush 110
            bastore
            dup
            iconst_5
            bipush 116
            bastore
            dup
            bipush 6
            bipush 32
            bastore
            dup
            bipush 7
            bipush 119
            bastore
            dup
            bipush 8
            bipush 114
            bastore
            dup
            bipush 9
            bipush 105
            bastore
            dup
            bipush 10
            bipush 116
            bastore
            dup
            bipush 11
            bipush 101
            bastore
            dup
            bipush 12
            bipush 32
            bastore
            dup
            bipush 13
         9: .line 70
            bipush 107
            bastore
            dup
            bipush 14
            bipush 101
            bastore
            dup
            bipush 15
            bipush 121
            bastore
        10: .line 68
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_CLIENT_WRITE_KEY:[B
        11: .line 73
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 115
            bastore
            dup
            iconst_1
            bipush 101
            bastore
            dup
            iconst_2
            bipush 114
            bastore
            dup
            iconst_3
            bipush 118
            bastore
            dup
            iconst_4
            bipush 101
            bastore
            dup
            iconst_5
            bipush 114
            bastore
            dup
            bipush 6
            bipush 32
            bastore
            dup
            bipush 7
            bipush 119
            bastore
            dup
            bipush 8
            bipush 114
            bastore
            dup
            bipush 9
            bipush 105
            bastore
            dup
            bipush 10
            bipush 116
            bastore
            dup
            bipush 11
            bipush 101
            bastore
            dup
            bipush 12
            bipush 32
            bastore
            dup
            bipush 13
        12: .line 74
            bipush 107
            bastore
            dup
            bipush 14
            bipush 101
            bastore
            dup
            bipush 15
            bipush 121
            bastore
        13: .line 72
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_SERVER_WRITE_KEY:[B
        14: .line 77
            bipush 8
            newarray 8
            dup
            iconst_0
            bipush 73
            bastore
            dup
            iconst_1
            bipush 86
            bastore
            dup
            iconst_2
            bipush 32
            bastore
            dup
            iconst_3
            bipush 98
            bastore
            dup
            iconst_4
            bipush 108
            bastore
            dup
            iconst_5
            bipush 111
            bastore
            dup
            bipush 6
            bipush 99
            bastore
            dup
            bipush 7
            bipush 107
            bastore
        15: .line 76
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_IV_BLOCK:[B
        16: .line 83
            bipush 54
            bipush 64
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad64:[B
        17: .line 84
            bipush 54
            sipush 128
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad128:[B
        18: .line 85
            bipush 92
            bipush 64
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad64:[B
        19: .line 86
            bipush 92
            sipush 128
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad128:[B
        20: .line 89
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genConst:()[[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.SSL3_CONST:[[B
        21: .line 120
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static byte[] genPad(byte, int);
    descriptor: (BI)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // byte b
        start local 1 // int count
         0: .line 92
            iload 1 /* count */
            newarray 8
            astore 2 /* padding */
        start local 2 // byte[] padding
         1: .line 93
            aload 2 /* padding */
            iload 0 /* b */
            invokestatic java.util.Arrays.fill:([BB)V
         2: .line 94
            aload 2 /* padding */
            areturn
        end local 2 // byte[] padding
        end local 1 // int count
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0        b  B
            0    3     1    count  I
            1    3     2  padding  [B
    MethodParameters:
       Name  Flags
      b      
      count  

  static byte[] concat(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // byte[] b1
        start local 1 // byte[] b2
         0: .line 98
            aload 0 /* b1 */
            arraylength
            istore 2 /* n1 */
        start local 2 // int n1
         1: .line 99
            aload 1 /* b2 */
            arraylength
            istore 3 /* n2 */
        start local 3 // int n2
         2: .line 100
            iload 2 /* n1 */
            iload 3 /* n2 */
            iadd
            newarray 8
            astore 4 /* b */
        start local 4 // byte[] b
         3: .line 101
            aload 0 /* b1 */
            iconst_0
            aload 4 /* b */
            iconst_0
            iload 2 /* n1 */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 102
            aload 1 /* b2 */
            iconst_0
            aload 4 /* b */
            iload 2 /* n1 */
            iload 3 /* n2 */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 103
            aload 4 /* b */
            areturn
        end local 4 // byte[] b
        end local 3 // int n2
        end local 2 // int n1
        end local 1 // byte[] b2
        end local 0 // byte[] b1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0    b1  [B
            0    6     1    b2  [B
            1    6     2    n1  I
            2    6     3    n2  I
            3    6     4     b  [B
    MethodParameters:
      Name  Flags
      b1    
      b2    

  private static byte[][] genConst();
    descriptor: ()[[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=0
         0: .line 107
            bipush 10
            istore 0 /* n */
        start local 0 // int n
         1: .line 108
            iload 0 /* n */
            anewarray byte[]
            astore 1 /* arr */
        start local 1 // byte[][] arr
         2: .line 109
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         3: goto 8
         4: .line 110
      StackMap locals: int byte[][] int
      StackMap stack:
            iload 2 /* i */
            iconst_1
            iadd
            newarray 8
            astore 3 /* b */
        start local 3 // byte[] b
         5: .line 111
            aload 3 /* b */
            bipush 65
            iload 2 /* i */
            iadd
            i2b
            invokestatic java.util.Arrays.fill:([BB)V
         6: .line 112
            aload 1 /* arr */
            iload 2 /* i */
            aload 3 /* b */
            aastore
        end local 3 // byte[] b
         7: .line 109
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            iload 0 /* n */
            if_icmplt 4
        end local 2 // int i
         9: .line 114
            aload 1 /* arr */
            areturn
        end local 1 // byte[][] arr
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1   10     0     n  I
            2   10     1   arr  [[B
            3    9     2     i  I
            5    7     3     b  [B

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.TlsPrfGenerator this
         0: .line 125
            aload 0 /* this */
            invokespecial javax.crypto.KeyGeneratorSpi.<init>:()V
         1: .line 126
            return
        end local 0 // com.sun.crypto.provider.TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/crypto/provider/TlsPrfGenerator;

  protected void engineInit(java.security.SecureRandom);
    descriptor: (Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.TlsPrfGenerator this
        start local 1 // java.security.SecureRandom random
         0: .line 129
            new java.security.InvalidParameterException
            dup
            ldc "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.security.SecureRandom random
        end local 0 // com.sun.crypto.provider.TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/sun/crypto/provider/TlsPrfGenerator;
            0    1     1  random  Ljava/security/SecureRandom;
    MethodParameters:
        Name  Flags
      random  

  protected void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.sun.crypto.provider.TlsPrfGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 135
            aload 1 /* params */
            instanceof sun.security.internal.spec.TlsPrfParameterSpec
            ifne 2
         1: .line 136
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* params */
            checkcast sun.security.internal.spec.TlsPrfParameterSpec
            putfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
         3: .line 139
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getSecret:()Ljavax/crypto/SecretKey;
            astore 3 /* key */
        start local 3 // javax.crypto.SecretKey key
         4: .line 140
            aload 3 /* key */
            ifnull 8
            ldc "RAW"
            aload 3 /* key */
            invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
         5: .line 141
            new java.security.InvalidAlgorithmParameterException
            dup
         6: .line 142
            ldc "Key encoding format must be RAW"
         7: .line 141
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 144
      StackMap locals: javax.crypto.SecretKey
      StackMap stack:
            return
        end local 3 // javax.crypto.SecretKey key
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.AlgorithmParameterSpec params
        end local 0 // com.sun.crypto.provider.TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lcom/sun/crypto/provider/TlsPrfGenerator;
            0    9     1  params  Ljava/security/spec/AlgorithmParameterSpec;
            0    9     2  random  Ljava/security/SecureRandom;
            4    9     3     key  Ljavax/crypto/SecretKey;
    Exceptions:
      throws java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      params  
      random  

  protected void engineInit(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.crypto.provider.TlsPrfGenerator this
        start local 1 // int keysize
        start local 2 // java.security.SecureRandom random
         0: .line 147
            new java.security.InvalidParameterException
            dup
            ldc "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.security.SecureRandom random
        end local 1 // int keysize
        end local 0 // com.sun.crypto.provider.TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/sun/crypto/provider/TlsPrfGenerator;
            0    1     1  keysize  I
            0    1     2   random  Ljava/security/SecureRandom;
    MethodParameters:
         Name  Flags
      keysize  
      random   

  javax.crypto.SecretKey engineGenerateKey0(boolean);
    descriptor: (Z)Ljavax/crypto/SecretKey;
    flags: (0x0000) 
    Code:
      stack=7, locals=7, args_size=2
        start local 0 // com.sun.crypto.provider.TlsPrfGenerator this
        start local 1 // boolean tls12
         0: .line 151
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            ifnonnull 4
         1: .line 152
            new java.lang.IllegalStateException
            dup
         2: .line 153
            ldc "TlsPrfGenerator must be initialized"
         3: .line 152
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getSecret:()Ljavax/crypto/SecretKey;
            astore 2 /* key */
        start local 2 // javax.crypto.SecretKey key
         5: .line 156
            aload 2 /* key */
            ifnonnull 6
            aconst_null
            goto 7
      StackMap locals: javax.crypto.SecretKey
      StackMap stack:
         6: aload 2 /* key */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
      StackMap locals:
      StackMap stack: byte[]
         7: astore 3 /* secret */
        start local 3 // byte[] secret
         8: .line 158
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getLabel:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 4 /* labelBytes */
        start local 4 // byte[] labelBytes
         9: .line 159
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
            istore 5 /* n */
        start local 5 // int n
        10: .line 160
            iload 1 /* tls12 */
            ifeq 16
        11: .line 161
            aload 3 /* secret */
            aload 4 /* labelBytes */
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getSeed:()[B
            iload 5 /* n */
        12: .line 162
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getPRFHashAlg:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getPRFHashLength:()I
        13: .line 163
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getPRFBlockSize:()I
        14: .line 161
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doTLS12PRF:([B[B[BILjava/lang/String;II)[B
        15: .line 163
            goto 17
        16: .line 164
      StackMap locals: byte[] byte[] int
      StackMap stack:
            aload 3 /* secret */
            aload 4 /* labelBytes */
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getSeed:()[B
            iload 5 /* n */
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doTLS10PRF:([B[B[BI)[B
        17: .line 160
      StackMap locals:
      StackMap stack: byte[]
            astore 6 /* prfBytes */
        start local 6 // byte[] prfBytes
        18: .line 165
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 6 /* prfBytes */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
        19: areturn
        end local 6 // byte[] prfBytes
        end local 5 // int n
        end local 4 // byte[] labelBytes
        20: .line 166
      StackMap locals: com.sun.crypto.provider.TlsPrfGenerator int javax.crypto.SecretKey byte[]
      StackMap stack: java.security.GeneralSecurityException
            astore 4 /* e */
        start local 4 // java.security.GeneralSecurityException e
        21: .line 167
            new java.security.ProviderException
            dup
            ldc "Could not generate PRF"
            aload 4 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.GeneralSecurityException e
        end local 3 // byte[] secret
        end local 2 // javax.crypto.SecretKey key
        end local 1 // boolean tls12
        end local 0 // com.sun.crypto.provider.TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0        this  Lcom/sun/crypto/provider/TlsPrfGenerator;
            0   22     1       tls12  Z
            5   22     2         key  Ljavax/crypto/SecretKey;
            8   22     3      secret  [B
            9   20     4  labelBytes  [B
           10   20     5           n  I
           18   20     6    prfBytes  [B
           21   22     4           e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           8    19      20  Class java.security.GeneralSecurityException
    MethodParameters:
       Name  Flags
      tls12  

  static byte[] doTLS12PRF(byte[], byte[], byte[], int, java.lang.String, int, int);
    descriptor: ([B[B[BILjava/lang/String;II)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=8, args_size=7
        start local 0 // byte[] secret
        start local 1 // byte[] labelBytes
        start local 2 // byte[] seed
        start local 3 // int outputLength
        start local 4 // java.lang.String prfHash
        start local 5 // int prfHashLength
        start local 6 // int prfBlockSize
         0: .line 175
            aload 4 /* prfHash */
            ifnonnull 2
         1: .line 176
            new java.security.NoSuchAlgorithmException
            dup
            ldc "Unspecified PRF algorithm"
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 178
      StackMap locals:
      StackMap stack:
            aload 4 /* prfHash */
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 7 /* prfMD */
        start local 7 // java.security.MessageDigest prfMD
         3: .line 179
            aload 0 /* secret */
            aload 1 /* labelBytes */
            aload 2 /* seed */
            iload 3 /* outputLength */
         4: .line 180
            aload 7 /* prfMD */
            iload 5 /* prfHashLength */
            iload 6 /* prfBlockSize */
         5: .line 179
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doTLS12PRF:([B[B[BILjava/security/MessageDigest;II)[B
            areturn
        end local 7 // java.security.MessageDigest prfMD
        end local 6 // int prfBlockSize
        end local 5 // int prfHashLength
        end local 4 // java.lang.String prfHash
        end local 3 // int outputLength
        end local 2 // byte[] seed
        end local 1 // byte[] labelBytes
        end local 0 // byte[] secret
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0         secret  [B
            0    6     1     labelBytes  [B
            0    6     2           seed  [B
            0    6     3   outputLength  I
            0    6     4        prfHash  Ljava/lang/String;
            0    6     5  prfHashLength  I
            0    6     6   prfBlockSize  I
            3    6     7          prfMD  Ljava/security/MessageDigest;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.DigestException
    MethodParameters:
               Name  Flags
      secret         
      labelBytes     
      seed           
      outputLength   
      prfHash        
      prfHashLength  
      prfBlockSize   

  static byte[] doTLS12PRF(byte[], byte[], byte[], int, java.security.MessageDigest, int, int);
    descriptor: ([B[B[BILjava/security/MessageDigest;II)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=10, locals=10, args_size=7
        start local 0 // byte[] secret
        start local 1 // byte[] labelBytes
        start local 2 // byte[] seed
        start local 3 // int outputLength
        start local 4 // java.security.MessageDigest mdPRF
        start local 5 // int mdPRFLen
        start local 6 // int mdPRFBlockSize
         0: .line 188
            aload 0 /* secret */
            ifnonnull 2
         1: .line 189
            getstatic com.sun.crypto.provider.TlsPrfGenerator.B0:[B
            astore 0 /* secret */
         2: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* secret */
            arraylength
            iload 6 /* mdPRFBlockSize */
            if_icmple 4
         3: .line 194
            aload 4 /* mdPRF */
            aload 0 /* secret */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 0 /* secret */
         4: .line 197
      StackMap locals:
      StackMap stack:
            iload 3 /* outputLength */
            newarray 8
            astore 7 /* output */
        start local 7 // byte[] output
         5: .line 201
            iload 6 /* mdPRFBlockSize */
            lookupswitch { // 2
                   64: 6
                  128: 9
              default: 12
          }
         6: .line 203
      StackMap locals: byte[]
      StackMap stack:
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad64:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            astore 8 /* ipad */
        start local 8 // byte[] ipad
         7: .line 204
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad64:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            astore 9 /* opad */
        start local 9 // byte[] opad
         8: .line 205
            goto 13
        end local 9 // byte[] opad
        end local 8 // byte[] ipad
         9: .line 207
      StackMap locals:
      StackMap stack:
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad128:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            astore 8 /* ipad */
        start local 8 // byte[] ipad
        10: .line 208
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad128:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            astore 9 /* opad */
        start local 9 // byte[] opad
        11: .line 209
            goto 13
        end local 9 // byte[] opad
        end local 8 // byte[] ipad
        12: .line 211
      StackMap locals:
      StackMap stack:
            new java.security.DigestException
            dup
            ldc "Unexpected block size."
            invokespecial java.security.DigestException.<init>:(Ljava/lang/String;)V
            athrow
        start local 8 // byte[] ipad
        start local 9 // byte[] opad
        13: .line 215
      StackMap locals: byte[] byte[]
      StackMap stack:
            aload 4 /* mdPRF */
            iload 5 /* mdPRFLen */
            aload 0 /* secret */
            iconst_0
            aload 0 /* secret */
            arraylength
            aload 1 /* labelBytes */
        14: .line 216
            aload 2 /* seed */
            aload 7 /* output */
            aload 8 /* ipad */
            aload 9 /* opad */
        15: .line 215
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.expand:(Ljava/security/MessageDigest;I[BII[B[B[B[B[B)V
        16: .line 218
            aload 7 /* output */
            areturn
        end local 9 // byte[] opad
        end local 8 // byte[] ipad
        end local 7 // byte[] output
        end local 6 // int mdPRFBlockSize
        end local 5 // int mdPRFLen
        end local 4 // java.security.MessageDigest mdPRF
        end local 3 // int outputLength
        end local 2 // byte[] seed
        end local 1 // byte[] labelBytes
        end local 0 // byte[] secret
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   17     0          secret  [B
            0   17     1      labelBytes  [B
            0   17     2            seed  [B
            0   17     3    outputLength  I
            0   17     4           mdPRF  Ljava/security/MessageDigest;
            0   17     5        mdPRFLen  I
            0   17     6  mdPRFBlockSize  I
            5   17     7          output  [B
            7    9     8            ipad  [B
           10   12     8            ipad  [B
           13   17     8            ipad  [B
            8    9     9            opad  [B
           11   12     9            opad  [B
           13   17     9            opad  [B
    Exceptions:
      throws java.security.DigestException
    MethodParameters:
                Name  Flags
      secret          
      labelBytes      
      seed            
      outputLength    
      mdPRF           
      mdPRFLen        
      mdPRFBlockSize  

  static byte[] doTLS10PRF(byte[], byte[], byte[], int);
    descriptor: ([B[B[BI)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // byte[] secret
        start local 1 // byte[] labelBytes
        start local 2 // byte[] seed
        start local 3 // int outputLength
         0: .line 224
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 4 /* md5 */
        start local 4 // java.security.MessageDigest md5
         1: .line 225
            ldc "SHA1"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 5 /* sha */
        start local 5 // java.security.MessageDigest sha
         2: .line 226
            aload 0 /* secret */
            aload 1 /* labelBytes */
            aload 2 /* seed */
            iload 3 /* outputLength */
            aload 4 /* md5 */
            aload 5 /* sha */
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doTLS10PRF:([B[B[BILjava/security/MessageDigest;Ljava/security/MessageDigest;)[B
            areturn
        end local 5 // java.security.MessageDigest sha
        end local 4 // java.security.MessageDigest md5
        end local 3 // int outputLength
        end local 2 // byte[] seed
        end local 1 // byte[] labelBytes
        end local 0 // byte[] secret
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0        secret  [B
            0    3     1    labelBytes  [B
            0    3     2          seed  [B
            0    3     3  outputLength  I
            1    3     4           md5  Ljava/security/MessageDigest;
            2    3     5           sha  Ljava/security/MessageDigest;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.DigestException
    MethodParameters:
              Name  Flags
      secret        
      labelBytes    
      seed          
      outputLength  

  static byte[] doTLS10PRF(byte[], byte[], byte[], int, java.security.MessageDigest, java.security.MessageDigest);
    descriptor: ([B[B[BILjava/security/MessageDigest;Ljava/security/MessageDigest;)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=10, locals=11, args_size=6
        start local 0 // byte[] secret
        start local 1 // byte[] labelBytes
        start local 2 // byte[] seed
        start local 3 // int outputLength
        start local 4 // java.security.MessageDigest md5
        start local 5 // java.security.MessageDigest sha
         0: .line 245
            aload 0 /* secret */
            ifnonnull 2
         1: .line 246
            getstatic com.sun.crypto.provider.TlsPrfGenerator.B0:[B
            astore 0 /* secret */
         2: .line 248
      StackMap locals:
      StackMap stack:
            aload 0 /* secret */
            arraylength
            iconst_1
            ishr
            istore 6 /* off */
        start local 6 // int off
         3: .line 249
            iload 6 /* off */
            aload 0 /* secret */
            arraylength
            iconst_1
            iand
            iadd
            istore 7 /* seclen */
        start local 7 // int seclen
         4: .line 251
            aload 0 /* secret */
            astore 8 /* secKey */
        start local 8 // byte[] secKey
         5: .line 252
            iload 7 /* seclen */
            istore 9 /* keyLen */
        start local 9 // int keyLen
         6: .line 253
            iload 3 /* outputLength */
            newarray 8
            astore 10 /* output */
        start local 10 // byte[] output
         7: .line 257
            iload 7 /* seclen */
            bipush 64
            if_icmple 11
         8: .line 258
            aload 4 /* md5 */
            aload 0 /* secret */
            iconst_0
            iload 7 /* seclen */
            invokevirtual java.security.MessageDigest.update:([BII)V
         9: .line 259
            aload 4 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 8 /* secKey */
        10: .line 260
            aload 8 /* secKey */
            arraylength
            istore 9 /* keyLen */
        11: .line 262
      StackMap locals: byte[] byte[] byte[] int java.security.MessageDigest java.security.MessageDigest int int byte[] int byte[]
      StackMap stack:
            aload 4 /* md5 */
            bipush 16
            aload 8 /* secKey */
            iconst_0
            iload 9 /* keyLen */
            aload 1 /* labelBytes */
            aload 2 /* seed */
            aload 10 /* output */
        12: .line 263
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad64:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad64:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
        13: .line 262
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.expand:(Ljava/security/MessageDigest;I[BII[B[B[B[B[B)V
        14: .line 267
            iload 7 /* seclen */
            bipush 64
            if_icmple 19
        15: .line 268
            aload 5 /* sha */
            aload 0 /* secret */
            iload 6 /* off */
            iload 7 /* seclen */
            invokevirtual java.security.MessageDigest.update:([BII)V
        16: .line 269
            aload 5 /* sha */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 8 /* secKey */
        17: .line 270
            aload 8 /* secKey */
            arraylength
            istore 9 /* keyLen */
        18: .line 271
            iconst_0
            istore 6 /* off */
        19: .line 273
      StackMap locals:
      StackMap stack:
            aload 5 /* sha */
            bipush 20
            aload 8 /* secKey */
            iload 6 /* off */
            iload 9 /* keyLen */
            aload 1 /* labelBytes */
            aload 2 /* seed */
            aload 10 /* output */
        20: .line 274
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad64:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            getstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad64:[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
        21: .line 273
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.expand:(Ljava/security/MessageDigest;I[BII[B[B[B[B[B)V
        22: .line 276
            aload 10 /* output */
            areturn
        end local 10 // byte[] output
        end local 9 // int keyLen
        end local 8 // byte[] secKey
        end local 7 // int seclen
        end local 6 // int off
        end local 5 // java.security.MessageDigest sha
        end local 4 // java.security.MessageDigest md5
        end local 3 // int outputLength
        end local 2 // byte[] seed
        end local 1 // byte[] labelBytes
        end local 0 // byte[] secret
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   23     0        secret  [B
            0   23     1    labelBytes  [B
            0   23     2          seed  [B
            0   23     3  outputLength  I
            0   23     4           md5  Ljava/security/MessageDigest;
            0   23     5           sha  Ljava/security/MessageDigest;
            3   23     6           off  I
            4   23     7        seclen  I
            5   23     8        secKey  [B
            6   23     9        keyLen  I
            7   23    10        output  [B
    Exceptions:
      throws java.security.DigestException
    MethodParameters:
              Name  Flags
      secret        
      labelBytes    
      seed          
      outputLength  
      md5           
      sha           

  private static void expand(java.security.MessageDigest, int, byte[], int, int, byte[], byte[], byte[], byte[], byte[]);
    descriptor: (Ljava/security/MessageDigest;I[BII[B[B[B[B[B)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=16, args_size=10
        start local 0 // java.security.MessageDigest digest
        start local 1 // int hmacSize
        start local 2 // byte[] secret
        start local 3 // int secOff
        start local 4 // int secLen
        start local 5 // byte[] label
        start local 6 // byte[] seed
        start local 7 // byte[] output
        start local 8 // byte[] pad1
        start local 9 // byte[] pad2
         0: .line 296
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         1: goto 5
         2: .line 297
      StackMap locals: int
      StackMap stack:
            aload 8 /* pad1 */
            iload 10 /* i */
            dup2
            baload
            aload 2 /* secret */
            iload 10 /* i */
            iload 3 /* secOff */
            iadd
            baload
            ixor
            i2b
            bastore
         3: .line 298
            aload 9 /* pad2 */
            iload 10 /* i */
            dup2
            baload
            aload 2 /* secret */
            iload 10 /* i */
            iload 3 /* secOff */
            iadd
            baload
            ixor
            i2b
            bastore
         4: .line 296
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 10 /* i */
            iload 4 /* secLen */
            if_icmplt 2
        end local 10 // int i
         6: .line 301
            iload 1 /* hmacSize */
            newarray 8
            astore 10 /* tmp */
        start local 10 // byte[] tmp
         7: .line 302
            aconst_null
            astore 11 /* aBytes */
        start local 11 // byte[] aBytes
         8: .line 315
            aload 7 /* output */
            arraylength
            istore 12 /* remaining */
        start local 12 // int remaining
         9: .line 316
            iconst_0
            istore 13 /* ofs */
        start local 13 // int ofs
        10: .line 317
            goto 38
        11: .line 322
      StackMap locals: java.security.MessageDigest int byte[] int int byte[] byte[] byte[] byte[] byte[] byte[] byte[] int int
      StackMap stack:
            aload 0 /* digest */
            aload 8 /* pad1 */
            invokevirtual java.security.MessageDigest.update:([B)V
        12: .line 323
            aload 11 /* aBytes */
            ifnonnull 16
        13: .line 324
            aload 0 /* digest */
            aload 5 /* label */
            invokevirtual java.security.MessageDigest.update:([B)V
        14: .line 325
            aload 0 /* digest */
            aload 6 /* seed */
            invokevirtual java.security.MessageDigest.update:([B)V
        15: .line 326
            goto 17
        16: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* digest */
            aload 11 /* aBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        17: .line 329
      StackMap locals:
      StackMap stack:
            aload 0 /* digest */
            aload 10 /* tmp */
            iconst_0
            iload 1 /* hmacSize */
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        18: .line 332
            aload 0 /* digest */
            aload 9 /* pad2 */
            invokevirtual java.security.MessageDigest.update:([B)V
        19: .line 333
            aload 0 /* digest */
            aload 10 /* tmp */
            invokevirtual java.security.MessageDigest.update:([B)V
        20: .line 334
            aload 11 /* aBytes */
            ifnonnull 22
        21: .line 335
            iload 1 /* hmacSize */
            newarray 8
            astore 11 /* aBytes */
        22: .line 337
      StackMap locals:
      StackMap stack:
            aload 0 /* digest */
            aload 11 /* aBytes */
            iconst_0
            iload 1 /* hmacSize */
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        23: .line 343
            aload 0 /* digest */
            aload 8 /* pad1 */
            invokevirtual java.security.MessageDigest.update:([B)V
        24: .line 344
            aload 0 /* digest */
            aload 11 /* aBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        25: .line 345
            aload 0 /* digest */
            aload 5 /* label */
            invokevirtual java.security.MessageDigest.update:([B)V
        26: .line 346
            aload 0 /* digest */
            aload 6 /* seed */
            invokevirtual java.security.MessageDigest.update:([B)V
        27: .line 347
            aload 0 /* digest */
            aload 10 /* tmp */
            iconst_0
            iload 1 /* hmacSize */
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        28: .line 350
            aload 0 /* digest */
            aload 9 /* pad2 */
            invokevirtual java.security.MessageDigest.update:([B)V
        29: .line 351
            aload 0 /* digest */
            aload 10 /* tmp */
            invokevirtual java.security.MessageDigest.update:([B)V
        30: .line 352
            aload 0 /* digest */
            aload 10 /* tmp */
            iconst_0
            iload 1 /* hmacSize */
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        31: .line 354
            iload 1 /* hmacSize */
            iload 12 /* remaining */
            invokestatic java.lang.Math.min:(II)I
            istore 14 /* k */
        start local 14 // int k
        32: .line 355
            iconst_0
            istore 15 /* i */
        start local 15 // int i
        33: goto 36
        34: .line 356
      StackMap locals: int int
      StackMap stack:
            aload 7 /* output */
            iload 13 /* ofs */
            iinc 13 /* ofs */ 1
            dup2
            baload
            aload 10 /* tmp */
            iload 15 /* i */
            baload
            ixor
            i2b
            bastore
        35: .line 355
            iinc 15 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 15 /* i */
            iload 14 /* k */
            if_icmplt 34
        end local 15 // int i
        37: .line 358
            iload 12 /* remaining */
            iload 14 /* k */
            isub
            istore 12 /* remaining */
        end local 14 // int k
        38: .line 317
      StackMap locals:
      StackMap stack:
            iload 12 /* remaining */
            ifgt 11
        39: .line 360
            return
        end local 13 // int ofs
        end local 12 // int remaining
        end local 11 // byte[] aBytes
        end local 10 // byte[] tmp
        end local 9 // byte[] pad2
        end local 8 // byte[] pad1
        end local 7 // byte[] output
        end local 6 // byte[] seed
        end local 5 // byte[] label
        end local 4 // int secLen
        end local 3 // int secOff
        end local 2 // byte[] secret
        end local 1 // int hmacSize
        end local 0 // java.security.MessageDigest digest
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   40     0     digest  Ljava/security/MessageDigest;
            0   40     1   hmacSize  I
            0   40     2     secret  [B
            0   40     3     secOff  I
            0   40     4     secLen  I
            0   40     5      label  [B
            0   40     6       seed  [B
            0   40     7     output  [B
            0   40     8       pad1  [B
            0   40     9       pad2  [B
            1    6    10          i  I
            7   40    10        tmp  [B
            8   40    11     aBytes  [B
            9   40    12  remaining  I
           10   40    13        ofs  I
           32   38    14          k  I
           33   37    15          i  I
    Exceptions:
      throws java.security.DigestException
    MethodParameters:
          Name  Flags
      digest    
      hmacSize  
      secret    
      secOff    
      secLen    
      label     
      seed      
      output    
      pad1      
      pad2      
}
SourceFile: "TlsPrfGenerator.java"
NestMembers:
  com.sun.crypto.provider.TlsPrfGenerator$V10  com.sun.crypto.provider.TlsPrfGenerator$V12
InnerClasses:
  public V10 = com.sun.crypto.provider.TlsPrfGenerator$V10 of com.sun.crypto.provider.TlsPrfGenerator
  public V12 = com.sun.crypto.provider.TlsPrfGenerator$V12 of com.sun.crypto.provider.TlsPrfGenerator