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 53
            iconst_0
            newarray 8
            putstatic com.sun.crypto.provider.TlsPrfGenerator.B0:[B
         1: .line 56
            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 55
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_MASTER_SECRET:[B
         3: .line 60
            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 61
            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 58
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_EXTENDED_MASTER_SECRET:[B
         6: .line 64
            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 63
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_KEY_EXPANSION:[B
         8: .line 67
            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 68
            bipush 107
            bastore
            dup
            bipush 14
            bipush 101
            bastore
            dup
            bipush 15
            bipush 121
            bastore
        10: .line 66
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_CLIENT_WRITE_KEY:[B
        11: .line 71
            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 72
            bipush 107
            bastore
            dup
            bipush 14
            bipush 101
            bastore
            dup
            bipush 15
            bipush 121
            bastore
        13: .line 70
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_SERVER_WRITE_KEY:[B
        14: .line 75
            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 74
            putstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_IV_BLOCK:[B
        16: .line 81
            bipush 54
            bipush 64
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad64:[B
        17: .line 82
            bipush 54
            sipush 128
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_ipad128:[B
        18: .line 83
            bipush 92
            bipush 64
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad64:[B
        19: .line 84
            bipush 92
            sipush 128
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genPad:(BI)[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.HMAC_opad128:[B
        20: .line 87
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.genConst:()[[B
            putstatic com.sun.crypto.provider.TlsPrfGenerator.SSL3_CONST:[[B
        21: .line 118
            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 90
            iload 1 /* count */
            newarray 8
            astore 2 /* padding */
        start local 2 // byte[] padding
         1: .line 91
            aload 2 /* padding */
            iload 0 /* b */
            invokestatic java.util.Arrays.fill:([BB)V
         2: .line 92
            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 96
            aload 0 /* b1 */
            arraylength
            istore 2 /* n1 */
        start local 2 // int n1
         1: .line 97
            aload 1 /* b2 */
            arraylength
            istore 3 /* n2 */
        start local 3 // int n2
         2: .line 98
            iload 2 /* n1 */
            iload 3 /* n2 */
            iadd
            newarray 8
            astore 4 /* b */
        start local 4 // byte[] b
         3: .line 99
            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 100
            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 101
            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 105
            bipush 10
            istore 0 /* n */
        start local 0 // int n
         1: .line 106
            iload 0 /* n */
            anewarray byte[]
            astore 1 /* arr */
        start local 1 // byte[][] arr
         2: .line 107
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         3: goto 8
         4: .line 108
      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 109
            aload 3 /* b */
            bipush 65
            iload 2 /* i */
            iadd
            i2b
            invokestatic java.util.Arrays.fill:([BB)V
         6: .line 110
            aload 1 /* arr */
            iload 2 /* i */
            aload 3 /* b */
            aastore
        end local 3 // byte[] b
         7: .line 107
            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 112
            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 122
            aload 0 /* this */
            invokespecial javax.crypto.KeyGeneratorSpi.<init>:()V
         1: .line 123
            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 126
            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 131
            aload 1 /* params */
            instanceof sun.security.internal.spec.TlsPrfParameterSpec
            ifne 2
         1: .line 132
            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 134
      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 135
            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 136
            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 137
            new java.security.InvalidAlgorithmParameterException
            dup
         6: .line 138
            ldc "Key encoding format must be RAW"
         7: .line 137
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 140
      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 143
            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 147
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            ifnonnull 4
         1: .line 148
            new java.lang.IllegalStateException
            dup
         2: .line 149
            ldc "TlsPrfGenerator must be initialized"
         3: .line 148
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 151
      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 152
            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 154
            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;
            ldc "UTF8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            astore 4 /* labelBytes */
        start local 4 // byte[] labelBytes
         9: .line 155
            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 156
            iload 1 /* tls12 */
            ifeq 16
        11: .line 157
            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 158
            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 159
            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 157
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doTLS12PRF:([B[B[BILjava/lang/String;II)[B
        15: .line 159
            goto 17
        16: .line 160
      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 156
      StackMap locals:
      StackMap stack: byte[]
            astore 6 /* prfBytes */
        start local 6 // byte[] prfBytes
        18: .line 161
            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 162
      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 163
            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
        22: .line 164
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            astore 4 /* e */
        start local 4 // java.io.UnsupportedEncodingException e
        23: .line 165
            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.io.UnsupportedEncodingException 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   24     0        this  Lcom/sun/crypto/provider/TlsPrfGenerator;
            0   24     1       tls12  Z
            5   24     2         key  Ljavax/crypto/SecretKey;
            8   24     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;
           23   24     4           e  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           8    19      20  Class java.security.GeneralSecurityException
           8    19      22  Class java.io.UnsupportedEncodingException
    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 173
            aload 4 /* prfHash */
            ifnonnull 2
         1: .line 174
            new java.security.NoSuchAlgorithmException
            dup
            ldc "Unspecified PRF algorithm"
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 176
      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 177
            aload 0 /* secret */
            aload 1 /* labelBytes */
            aload 2 /* seed */
            iload 3 /* outputLength */
         4: .line 178
            aload 7 /* prfMD */
            iload 5 /* prfHashLength */
            iload 6 /* prfBlockSize */
         5: .line 177
            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 186
            aload 0 /* secret */
            ifnonnull 2
         1: .line 187
            getstatic com.sun.crypto.provider.TlsPrfGenerator.B0:[B
            astore 0 /* secret */
         2: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* secret */
            arraylength
            iload 6 /* mdPRFBlockSize */
            if_icmple 4
         3: .line 192
            aload 4 /* mdPRF */
            aload 0 /* secret */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 0 /* secret */
         4: .line 195
      StackMap locals:
      StackMap stack:
            iload 3 /* outputLength */
            newarray 8
            astore 7 /* output */
        start local 7 // byte[] output
         5: .line 199
            iload 6 /* mdPRFBlockSize */
            lookupswitch { // 2
                   64: 6
                  128: 9
              default: 12
          }
         6: .line 201
      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 202
            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 203
            goto 13
        end local 9 // byte[] opad
        end local 8 // byte[] ipad
         9: .line 205
      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 206
            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 207
            goto 13
        end local 9 // byte[] opad
        end local 8 // byte[] ipad
        12: .line 209
      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 213
      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 214
            aload 2 /* seed */
            aload 7 /* output */
            aload 8 /* ipad */
            aload 9 /* opad */
        15: .line 213
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.expand:(Ljava/security/MessageDigest;I[BII[B[B[B[B[B)V
        16: .line 216
            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 222
            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 223
            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 224
            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 243
            aload 0 /* secret */
            ifnonnull 2
         1: .line 244
            getstatic com.sun.crypto.provider.TlsPrfGenerator.B0:[B
            astore 0 /* secret */
         2: .line 246
      StackMap locals:
      StackMap stack:
            aload 0 /* secret */
            arraylength
            iconst_1
            ishr
            istore 6 /* off */
        start local 6 // int off
         3: .line 247
            iload 6 /* off */
            aload 0 /* secret */
            arraylength
            iconst_1
            iand
            iadd
            istore 7 /* seclen */
        start local 7 // int seclen
         4: .line 249
            aload 0 /* secret */
            astore 8 /* secKey */
        start local 8 // byte[] secKey
         5: .line 250
            iload 7 /* seclen */
            istore 9 /* keyLen */
        start local 9 // int keyLen
         6: .line 251
            iload 3 /* outputLength */
            newarray 8
            astore 10 /* output */
        start local 10 // byte[] output
         7: .line 255
            iload 7 /* seclen */
            bipush 64
            if_icmple 11
         8: .line 256
            aload 4 /* md5 */
            aload 0 /* secret */
            iconst_0
            iload 7 /* seclen */
            invokevirtual java.security.MessageDigest.update:([BII)V
         9: .line 257
            aload 4 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 8 /* secKey */
        10: .line 258
            aload 8 /* secKey */
            arraylength
            istore 9 /* keyLen */
        11: .line 260
      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 261
            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 260
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.expand:(Ljava/security/MessageDigest;I[BII[B[B[B[B[B)V
        14: .line 265
            iload 7 /* seclen */
            bipush 64
            if_icmple 19
        15: .line 266
            aload 5 /* sha */
            aload 0 /* secret */
            iload 6 /* off */
            iload 7 /* seclen */
            invokevirtual java.security.MessageDigest.update:([BII)V
        16: .line 267
            aload 5 /* sha */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 8 /* secKey */
        17: .line 268
            aload 8 /* secKey */
            arraylength
            istore 9 /* keyLen */
        18: .line 269
            iconst_0
            istore 6 /* off */
        19: .line 271
      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 272
            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 271
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.expand:(Ljava/security/MessageDigest;I[BII[B[B[B[B[B)V
        22: .line 274
            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 294
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         1: goto 5
         2: .line 295
      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 296
            aload 9 /* pad2 */
            iload 10 /* i */
            dup2
            baload
            aload 2 /* secret */
            iload 10 /* i */
            iload 3 /* secOff */
            iadd
            baload
            ixor
            i2b
            bastore
         4: .line 294
            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 299
            iload 1 /* hmacSize */
            newarray 8
            astore 10 /* tmp */
        start local 10 // byte[] tmp
         7: .line 300
            aconst_null
            astore 11 /* aBytes */
        start local 11 // byte[] aBytes
         8: .line 313
            aload 7 /* output */
            arraylength
            istore 12 /* remaining */
        start local 12 // int remaining
         9: .line 314
            iconst_0
            istore 13 /* ofs */
        start local 13 // int ofs
        10: .line 315
            goto 38
        11: .line 320
      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 321
            aload 11 /* aBytes */
            ifnonnull 16
        13: .line 322
            aload 0 /* digest */
            aload 5 /* label */
            invokevirtual java.security.MessageDigest.update:([B)V
        14: .line 323
            aload 0 /* digest */
            aload 6 /* seed */
            invokevirtual java.security.MessageDigest.update:([B)V
        15: .line 324
            goto 17
        16: .line 325
      StackMap locals:
      StackMap stack:
            aload 0 /* digest */
            aload 11 /* aBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        17: .line 327
      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 330
            aload 0 /* digest */
            aload 9 /* pad2 */
            invokevirtual java.security.MessageDigest.update:([B)V
        19: .line 331
            aload 0 /* digest */
            aload 10 /* tmp */
            invokevirtual java.security.MessageDigest.update:([B)V
        20: .line 332
            aload 11 /* aBytes */
            ifnonnull 22
        21: .line 333
            iload 1 /* hmacSize */
            newarray 8
            astore 11 /* aBytes */
        22: .line 335
      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 341
            aload 0 /* digest */
            aload 8 /* pad1 */
            invokevirtual java.security.MessageDigest.update:([B)V
        24: .line 342
            aload 0 /* digest */
            aload 11 /* aBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        25: .line 343
            aload 0 /* digest */
            aload 5 /* label */
            invokevirtual java.security.MessageDigest.update:([B)V
        26: .line 344
            aload 0 /* digest */
            aload 6 /* seed */
            invokevirtual java.security.MessageDigest.update:([B)V
        27: .line 345
            aload 0 /* digest */
            aload 10 /* tmp */
            iconst_0
            iload 1 /* hmacSize */
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        28: .line 348
            aload 0 /* digest */
            aload 9 /* pad2 */
            invokevirtual java.security.MessageDigest.update:([B)V
        29: .line 349
            aload 0 /* digest */
            aload 10 /* tmp */
            invokevirtual java.security.MessageDigest.update:([B)V
        30: .line 350
            aload 0 /* digest */
            aload 10 /* tmp */
            iconst_0
            iload 1 /* hmacSize */
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        31: .line 352
            iload 1 /* hmacSize */
            iload 12 /* remaining */
            invokestatic java.lang.Math.min:(II)I
            istore 14 /* k */
        start local 14 // int k
        32: .line 353
            iconst_0
            istore 15 /* i */
        start local 15 // int i
        33: goto 36
        34: .line 354
      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 353
            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 356
            iload 12 /* remaining */
            iload 14 /* k */
            isub
            istore 12 /* remaining */
        end local 14 // int k
        38: .line 315
      StackMap locals:
      StackMap stack:
            iload 12 /* remaining */
            ifgt 11
        39: .line 358
            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