final class sun.security.pkcs11.P11TlsPrfGenerator extends javax.crypto.KeyGeneratorSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.pkcs11.P11TlsPrfGenerator
  super_class: javax.crypto.KeyGeneratorSpi
{
  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 final sun.security.pkcs11.Token token;
    descriptor: Lsun/security/pkcs11/Token;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String algorithm;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long mechanism;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private sun.security.pkcs11.P11Key p11Key;
    descriptor: Lsun/security/pkcs11/P11Key;
    flags: (0x0002) ACC_PRIVATE

  private static final javax.crypto.SecretKey NULL_KEY;
    descriptor: Ljavax/crypto/SecretKey;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 107
            new sun.security.pkcs11.P11TlsPrfGenerator$1
            dup
            invokespecial sun.security.pkcs11.P11TlsPrfGenerator$1.<init>:()V
            putstatic sun.security.pkcs11.P11TlsPrfGenerator.NULL_KEY:Ljavax/crypto/SecretKey;
         1: .line 117
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(sun.security.pkcs11.Token, java.lang.String, long);
    descriptor: (Lsun/security/pkcs11/Token;Ljava/lang/String;J)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // sun.security.pkcs11.Token token
        start local 2 // java.lang.String algorithm
        start local 3 // long mechanism
         0: .line 72
            aload 0 /* this */
            invokespecial javax.crypto.KeyGeneratorSpi.<init>:()V
         1: .line 73
            aload 0 /* this */
            aload 1 /* token */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
         2: .line 74
            aload 0 /* this */
            aload 2 /* algorithm */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.algorithm:Ljava/lang/String;
         3: .line 75
            aload 0 /* this */
            lload 3 /* mechanism */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
         4: .line 76
            return
        end local 3 // long mechanism
        end local 2 // java.lang.String algorithm
        end local 1 // sun.security.pkcs11.Token token
        end local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            0    5     1      token  Lsun/security/pkcs11/Token;
            0    5     2  algorithm  Ljava/lang/String;
            0    5     3  mechanism  J
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
           Name  Flags
      token      
      algorithm  
      mechanism  

  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 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // java.security.SecureRandom random
         0: .line 79
            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 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            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=4, locals=5, args_size=3
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 84
            aload 1 /* params */
            instanceof sun.security.internal.spec.TlsPrfParameterSpec
            ifne 2
         1: .line 85
            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 87
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* params */
            checkcast sun.security.internal.spec.TlsPrfParameterSpec
            putfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
         3: .line 88
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.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 89
            aload 3 /* key */
            ifnonnull 6
         5: .line 90
            getstatic sun.security.pkcs11.P11TlsPrfGenerator.NULL_KEY:Ljavax/crypto/SecretKey;
            astore 3 /* key */
         6: .line 93
      StackMap locals: javax.crypto.SecretKey
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 3 /* key */
            aconst_null
            invokestatic sun.security.pkcs11.P11SecretKeyFactory.convertKey:(Lsun/security/pkcs11/Token;Ljava/security/Key;Ljava/lang/String;)Lsun/security/pkcs11/P11Key;
            putfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
         7: .line 94
            goto 10
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
         8: astore 4 /* e */
        start local 4 // java.security.InvalidKeyException e
         9: .line 95
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "init() failed"
            aload 4 /* e */
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.InvalidKeyException e
        10: .line 97
      StackMap locals:
      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 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            0   11     1  params  Ljava/security/spec/AlgorithmParameterSpec;
            0   11     2  random  Ljava/security/SecureRandom;
            4   11     3     key  Ljavax/crypto/SecretKey;
            9   10     4       e  Ljava/security/InvalidKeyException;
      Exception table:
        from    to  target  type
           6     7       8  Class java.security.InvalidKeyException
    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 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // int keysize
        start local 2 // java.security.SecureRandom random
         0: .line 120
            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 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            0    1     1  keysize  I
            0    1     2   random  Ljava/security/SecureRandom;
    MethodParameters:
         Name  Flags
      keysize  
      random   

  protected javax.crypto.SecretKey engineGenerateKey();
    descriptor: ()Ljavax/crypto/SecretKey;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=11, args_size=1
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
         0: .line 124
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            ifnonnull 2
         1: .line 125
            new java.lang.IllegalStateException
            dup
            ldc "TlsPrfGenerator must be initialized"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getSeed:()[B
            astore 1 /* seed */
        start local 1 // byte[] seed
         3: .line 130
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            ldc 996
            lcmp
            ifne 35
         4: .line 132
            iconst_0
            istore 2 /* ulServerOrClient */
        start local 2 // int ulServerOrClient
         5: .line 133
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getLabel:()Ljava/lang/String;
            ldc "server finished"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 134
            iconst_1
            istore 2 /* ulServerOrClient */
         7: .line 136
      StackMap locals: byte[] int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getLabel:()Ljava/lang/String;
            ldc "client finished"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 137
            iconst_2
            istore 2 /* ulServerOrClient */
         9: .line 140
      StackMap locals:
      StackMap stack:
            iload 2 /* ulServerOrClient */
            ifeq 34
        10: .line 142
            new sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS
            dup
        11: .line 143
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getPRFHashAlg:()Ljava/lang/String;
            invokestatic sun.security.pkcs11.wrapper.Functions.getHashMechId:(Ljava/lang/String;)J
        12: .line 144
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
            i2l
            iload 2 /* ulServerOrClient */
            i2l
        13: .line 142
            invokespecial sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS.<init>:(JJJ)V
            astore 3 /* params */
        start local 3 // sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS params
        14: .line 145
            aconst_null
            astore 4 /* session */
        start local 4 // sun.security.pkcs11.Session session
        15: .line 146
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 5 /* keyID */
        start local 5 // long keyID
        16: .line 148
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 4 /* session */
        17: .line 149
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
        18: .line 150
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            aload 3 /* params */
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(JLsun/security/pkcs11/wrapper/CK_TLS_MAC_PARAMS;)V
            lload 5 /* keyID */
        19: .line 149
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignInit:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V
        20: .line 151
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            lconst_0
            aload 1 /* seed */
            iconst_0
            aload 1 /* seed */
            arraylength
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate:(JJ[BII)V
        21: .line 152
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        22: .line 153
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
        23: .line 152
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignFinal:(JI)[B
            astore 7 /* out */
        start local 7 // byte[] out
        24: .line 154
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 7 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 9
        25: .line 158
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        26: .line 159
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        27: .line 154
            aload 9
            areturn
        end local 7 // byte[] out
        28: .line 155
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] int sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS sun.security.pkcs11.Session long
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 7 /* e */
        start local 7 // sun.security.pkcs11.wrapper.PKCS11Exception e
        29: .line 156
            new java.security.ProviderException
            dup
            ldc "Could not calculate PRF"
            aload 7 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // sun.security.pkcs11.wrapper.PKCS11Exception e
        30: .line 157
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        31: .line 158
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        32: .line 159
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        33: .line 160
            aload 8
            athrow
        end local 5 // long keyID
        end local 4 // sun.security.pkcs11.Session session
        end local 3 // sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS params
        34: .line 162
      StackMap locals:
      StackMap stack:
            new java.security.ProviderException
            dup
            ldc "Only Finished message authentication code generation supported for TLS 1.2."
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int ulServerOrClient
        35: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getLabel:()Ljava/lang/String;
            invokestatic sun.security.pkcs11.P11Util.getBytesUTF8:(Ljava/lang/String;)[B
            astore 2 /* label */
        start local 2 // byte[] label
        36: .line 169
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            ldc 2147484531
            lcmp
            ifne 58
        37: .line 170
            aconst_null
            astore 3 /* session */
        start local 3 // sun.security.pkcs11.Session session
        38: .line 171
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 4 /* keyID */
        start local 4 // long keyID
        39: .line 173
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 3 /* session */
        40: .line 174
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        41: .line 175
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(J)V
            lload 4 /* keyID */
        42: .line 174
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignInit:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V
        43: .line 176
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            lconst_0
            aload 2 /* label */
            iconst_0
            aload 2 /* label */
            arraylength
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate:(JJ[BII)V
        44: .line 177
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            lconst_0
            aload 1 /* seed */
            iconst_0
            aload 1 /* seed */
            arraylength
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate:(JJ[BII)V
        45: .line 178
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        46: .line 179
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
        47: .line 178
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignFinal:(JI)[B
            astore 6 /* out */
        start local 6 // byte[] out
        48: .line 180
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 6 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 8
        49: .line 184
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        50: .line 185
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        51: .line 180
            aload 8
            areturn
        end local 6 // byte[] out
        52: .line 181
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] byte[] sun.security.pkcs11.Session long
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 6 /* e */
        start local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        53: .line 182
            new java.security.ProviderException
            dup
            ldc "Could not calculate PRF"
            aload 6 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        54: .line 183
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        55: .line 184
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        56: .line 185
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        57: .line 186
            aload 7
            athrow
        end local 4 // long keyID
        end local 3 // sun.security.pkcs11.Session session
        58: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
            newarray 8
            astore 3 /* out */
        start local 3 // byte[] out
        59: .line 192
            new sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS
            dup
            aload 1 /* seed */
            aload 2 /* label */
            aload 3 /* out */
            invokespecial sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS.<init>:([B[B[B)V
            astore 4 /* params */
        start local 4 // sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS params
        60: .line 194
            aconst_null
            astore 5 /* session */
        start local 5 // sun.security.pkcs11.Session session
        61: .line 195
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 6 /* keyID */
        start local 6 // long keyID
        62: .line 197
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 5 /* session */
        63: .line 198
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
        64: .line 199
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            aload 4 /* params */
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(JLsun/security/pkcs11/wrapper/CK_TLS_PRF_PARAMS;)V
            lload 6 /* keyID */
            aconst_null
        65: .line 198
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_DeriveKey:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J
            pop2
        66: .line 200
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 3 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 10
        67: .line 204
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        68: .line 205
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        69: .line 200
            aload 10
            areturn
        70: .line 201
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] byte[] byte[] sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS sun.security.pkcs11.Session long
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 8 /* e */
        start local 8 // sun.security.pkcs11.wrapper.PKCS11Exception e
        71: .line 202
            new java.security.ProviderException
            dup
            ldc "Could not calculate PRF"
            aload 8 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 8 // sun.security.pkcs11.wrapper.PKCS11Exception e
        72: .line 203
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        73: .line 204
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        74: .line 205
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        75: .line 206
            aload 9
            athrow
        end local 6 // long keyID
        end local 5 // sun.security.pkcs11.Session session
        end local 4 // sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS params
        end local 3 // byte[] out
        end local 2 // byte[] label
        end local 1 // byte[] seed
        end local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   76     0              this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            3   76     1              seed  [B
            5   35     2  ulServerOrClient  I
           14   34     3            params  Lsun/security/pkcs11/wrapper/CK_TLS_MAC_PARAMS;
           15   34     4           session  Lsun/security/pkcs11/Session;
           16   34     5             keyID  J
           24   28     7               out  [B
           29   30     7                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
           36   76     2             label  [B
           38   58     3           session  Lsun/security/pkcs11/Session;
           39   58     4             keyID  J
           48   52     6               out  [B
           53   54     6                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
           59   76     3               out  [B
           60   76     4            params  Lsun/security/pkcs11/wrapper/CK_TLS_PRF_PARAMS;
           61   76     5           session  Lsun/security/pkcs11/Session;
           62   76     6             keyID  J
           71   72     8                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
          16    25      28  Class sun.security.pkcs11.wrapper.PKCS11Exception
          16    25      30  any
          28    30      30  any
          39    49      52  Class sun.security.pkcs11.wrapper.PKCS11Exception
          39    49      54  any
          52    54      54  any
          62    67      70  Class sun.security.pkcs11.wrapper.PKCS11Exception
          62    67      72  any
          70    72      72  any
}
SourceFile: "P11TlsPrfGenerator.java"
NestMembers:
  sun.security.pkcs11.P11TlsPrfGenerator$1
InnerClasses:
  sun.security.pkcs11.P11TlsPrfGenerator$1