final class sun.security.pkcs11.NativeKeyHolder
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.pkcs11.NativeKeyHolder
  super_class: java.lang.Object
{
  private static long nativeKeyWrapperKeyID;
    descriptor: J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static sun.security.pkcs11.wrapper.CK_MECHANISM nativeKeyWrapperMechanism;
    descriptor: Lsun/security/pkcs11/wrapper/CK_MECHANISM;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static long nativeKeyWrapperRefCount;
    descriptor: J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static sun.security.pkcs11.Session nativeKeyWrapperSession;
    descriptor: Lsun/security/pkcs11/Session;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private final sun.security.pkcs11.P11Key p11Key;
    descriptor: Lsun/security/pkcs11/P11Key;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final byte[] nativeKeyInfo;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean wrapperKeyUsed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private long keyID;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

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

  private int refCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 1136
            ldc Lsun/security/pkcs11/NativeKeyHolder;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic sun.security.pkcs11.NativeKeyHolder.$assertionsDisabled:Z
         3: .line 1138
            lconst_0
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
         4: .line 1139
            aconst_null
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperMechanism:Lsun/security/pkcs11/wrapper/CK_MECHANISM;
         5: .line 1140
            lconst_0
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
         6: .line 1141
            aconst_null
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperSession:Lsun/security/pkcs11/Session;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void createNativeKeyWrapper(sun.security.pkcs11.Token);
    descriptor: (Lsun/security/pkcs11/Token;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=15, locals=5, args_size=1
        start local 0 // sun.security.pkcs11.Token token
         0: .line 1157
            getstatic sun.security.pkcs11.NativeKeyHolder.$assertionsDisabled:Z
            ifne 1
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
            lconst_0
            lcmp
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 1158
      StackMap locals:
      StackMap stack:
            getstatic sun.security.pkcs11.NativeKeyHolder.$assertionsDisabled:Z
            ifne 2
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
            lconst_0
            lcmp
            ifeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 1159
      StackMap locals:
      StackMap stack:
            getstatic sun.security.pkcs11.NativeKeyHolder.$assertionsDisabled:Z
            ifne 3
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperSession:Lsun/security/pkcs11/Session;
            ifnull 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 1161
      StackMap locals:
      StackMap stack:
            aload 0 /* token */
            ldc "generate"
         4: .line 1162
            ldc 4
            ldc 31
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
         5: .line 1163
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            lconst_0
            ldc 4
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
            dup
            iconst_1
         6: .line 1164
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 353
            ldc 32
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
         7: .line 1161
            invokevirtual sun.security.pkcs11.Token.getAttributes:(Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            astore 1 /* wrappingAttributes */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] wrappingAttributes
         8: .line 1165
            aconst_null
            astore 2 /* s */
        start local 2 // sun.security.pkcs11.Session s
         9: .line 1167
            aload 0 /* token */
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            astore 2 /* s */
        10: .line 1168
            aload 0 /* token */
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        11: .line 1169
            aload 2 /* s */
            invokevirtual sun.security.pkcs11.Session.id:()J
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            ldc 4224
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(J)V
        12: .line 1170
            aload 1 /* wrappingAttributes */
        13: .line 1168
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GenerateKey:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
        14: .line 1171
            aload 2 /* s */
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperSession:Lsun/security/pkcs11/Session;
        15: .line 1172
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperSession:Lsun/security/pkcs11/Session;
            invokevirtual sun.security.pkcs11.Session.addObject:()V
        16: .line 1173
            bipush 16
            newarray 8
            astore 3 /* iv */
        start local 3 // byte[] iv
        17: .line 1174
            invokestatic sun.security.jca.JCAUtil.getSecureRandom:()Ljava/security/SecureRandom;
            aload 3 /* iv */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        18: .line 1175
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            ldc 4229
            aload 3 /* iv */
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(J[B)V
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperMechanism:Lsun/security/pkcs11/wrapper/CK_MECHANISM;
        end local 3 // byte[] iv
        19: .line 1176
            goto 25
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        20: pop
        21: .line 1179
            aload 0 /* token */
            aload 2 /* s */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
            goto 26
        22: .line 1178
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        23: .line 1179
            aload 0 /* token */
            aload 2 /* s */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        24: .line 1180
            aload 4
            athrow
        25: .line 1179
      StackMap locals:
      StackMap stack:
            aload 0 /* token */
            aload 2 /* s */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        26: .line 1181
      StackMap locals:
      StackMap stack:
            return
        end local 2 // sun.security.pkcs11.Session s
        end local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] wrappingAttributes
        end local 0 // sun.security.pkcs11.Token token
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   27     0               token  Lsun/security/pkcs11/Token;
            8   27     1  wrappingAttributes  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            9   27     2                   s  Lsun/security/pkcs11/Session;
           17   19     3                  iv  [B
      Exception table:
        from    to  target  type
           9    19      20  Class sun.security.pkcs11.wrapper.PKCS11Exception
           9    21      22  any
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
       Name  Flags
      token  

  private static void deleteNativeKeyWrapper();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=0
         0: .line 1184
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperSession:Lsun/security/pkcs11/Session;
            getfield sun.security.pkcs11.Session.token:Lsun/security/pkcs11/Token;
            astore 0 /* token */
        start local 0 // sun.security.pkcs11.Token token
         1: .line 1185
            aload 0 /* token */
            invokevirtual sun.security.pkcs11.Token.isValid:()Z
            ifeq 13
         2: .line 1186
            aconst_null
            astore 1 /* s */
        start local 1 // sun.security.pkcs11.Session s
         3: .line 1188
            aload 0 /* token */
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 1 /* s */
         4: .line 1189
            aload 0 /* token */
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 1 /* s */
            invokevirtual sun.security.pkcs11.Session.id:()J
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_DestroyObject:(JJ)V
         5: .line 1190
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperSession:Lsun/security/pkcs11/Session;
            invokevirtual sun.security.pkcs11.Session.removeObject:()V
         6: .line 1191
            goto 12
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
         7: pop
         8: .line 1194
            aload 0 /* token */
            aload 1 /* s */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
            goto 13
         9: .line 1193
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
        10: .line 1194
            aload 0 /* token */
            aload 1 /* s */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        11: .line 1195
            aload 2
            athrow
        12: .line 1194
      StackMap locals:
      StackMap stack:
            aload 0 /* token */
            aload 1 /* s */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        end local 1 // sun.security.pkcs11.Session s
        13: .line 1197
      StackMap locals:
      StackMap stack:
            lconst_0
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
        14: .line 1198
            aconst_null
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperMechanism:Lsun/security/pkcs11/wrapper/CK_MECHANISM;
        15: .line 1199
            aconst_null
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperSession:Lsun/security/pkcs11/Session;
        16: .line 1200
            return
        end local 0 // sun.security.pkcs11.Token token
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1   17     0  token  Lsun/security/pkcs11/Token;
            3   13     1      s  Lsun/security/pkcs11/Session;
      Exception table:
        from    to  target  type
           3     6       7  Class sun.security.pkcs11.wrapper.PKCS11Exception
           3     8       9  any

  static void decWrapperKeyRef();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 1203
            ldc Lsun/security/pkcs11/NativeKeyHolder;
            dup
            astore 0
            monitorenter
         1: .line 1204
            getstatic sun.security.pkcs11.NativeKeyHolder.$assertionsDisabled:Z
            ifne 2
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
            lconst_0
            lcmp
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 1205
      StackMap locals: java.lang.Class
      StackMap stack:
            getstatic sun.security.pkcs11.NativeKeyHolder.$assertionsDisabled:Z
            ifne 3
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
            lconst_0
            lcmp
            ifgt 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 1206
      StackMap locals:
      StackMap stack:
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
            lconst_1
            lsub
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
         4: .line 1207
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
            lconst_0
            lcmp
            ifne 6
         5: .line 1208
            invokestatic sun.security.pkcs11.NativeKeyHolder.deleteNativeKeyWrapper:()V
         6: .line 1203
      StackMap locals:
      StackMap stack:
            aload 0
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 0
            monitorexit
         9: athrow
        10: .line 1211
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           1     7       8  any
           8     9       8  any

  void <init>(sun.security.pkcs11.P11Key, long, sun.security.pkcs11.Session, boolean, boolean);
    descriptor: (Lsun/security/pkcs11/P11Key;JLsun/security/pkcs11/Session;ZZ)V
    flags: (0x0000) 
    Code:
      stack=8, locals=11, args_size=6
        start local 0 // sun.security.pkcs11.NativeKeyHolder this
        start local 1 // sun.security.pkcs11.P11Key p11Key
        start local 2 // long keyID
        start local 4 // sun.security.pkcs11.Session keySession
        start local 5 // boolean extractKeyInfo
        start local 6 // boolean isTokenObject
         0: .line 1213
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1215
            aload 0 /* this */
            aload 1 /* p11Key */
            putfield sun.security.pkcs11.NativeKeyHolder.p11Key:Lsun/security/pkcs11/P11Key;
         2: .line 1216
            aload 0 /* this */
            lload 2 /* keyID */
            putfield sun.security.pkcs11.NativeKeyHolder.keyID:J
         3: .line 1217
            aload 0 /* this */
            iconst_m1
            putfield sun.security.pkcs11.NativeKeyHolder.refCount:I
         4: .line 1218
            aconst_null
            astore 7 /* ki */
        start local 7 // byte[] ki
         5: .line 1219
            iload 6 /* isTokenObject */
            ifeq 8
         6: .line 1220
            aload 0 /* this */
            aconst_null
            putfield sun.security.pkcs11.NativeKeyHolder.ref:Lsun/security/pkcs11/SessionKeyRef;
         7: .line 1221
            goto 39
         8: .line 1223
      StackMap locals: sun.security.pkcs11.NativeKeyHolder sun.security.pkcs11.P11Key long sun.security.pkcs11.Session int int byte[]
      StackMap stack:
            aload 1 /* p11Key */
            getfield sun.security.pkcs11.P11Key.token:Lsun/security/pkcs11/Token;
            astore 8 /* token */
        start local 8 // sun.security.pkcs11.Token token
         9: .line 1224
            iload 5 /* extractKeyInfo */
            ifeq 36
        10: .line 1226
            aload 1 /* p11Key */
            getfield sun.security.pkcs11.P11Key.sensitive:Z
            ifeq 21
        11: .line 1228
            ldc Lsun/security/pkcs11/NativeKeyHolder;
            dup
            astore 9
            monitorenter
        12: .line 1229
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
            lconst_0
            lcmp
            ifne 14
        13: .line 1230
            aload 8 /* token */
            invokestatic sun.security.pkcs11.NativeKeyHolder.createNativeKeyWrapper:(Lsun/security/pkcs11/Token;)V
        14: .line 1236
      StackMap locals: sun.security.pkcs11.Token java.lang.Class
      StackMap stack:
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
            lconst_0
            lcmp
            ifeq 17
        15: .line 1237
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
            lconst_1
            ladd
            putstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperRefCount:J
        16: .line 1238
            aload 0 /* this */
            iconst_1
            putfield sun.security.pkcs11.NativeKeyHolder.wrapperKeyUsed:Z
        17: .line 1228
      StackMap locals:
      StackMap stack:
            aload 9
            monitorexit
        18: goto 21
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: aload 9
            monitorexit
        20: athrow
        21: .line 1242
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 9 /* opSession */
        start local 9 // sun.security.pkcs11.Session opSession
        22: .line 1244
            aload 8 /* token */
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 9 /* opSession */
        23: .line 1245
            aload 1 /* p11Key */
            getfield sun.security.pkcs11.P11Key.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 9 /* opSession */
            invokevirtual sun.security.pkcs11.Session.id:()J
        24: .line 1246
            lload 2 /* keyID */
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
        25: .line 1247
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperMechanism:Lsun/security/pkcs11/wrapper/CK_MECHANISM;
        26: .line 1245
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.getNativeKeyInfo:(JJJLsun/security/pkcs11/wrapper/CK_MECHANISM;)[B
            astore 7 /* ki */
        27: .line 1248
            goto 33
      StackMap locals: sun.security.pkcs11.NativeKeyHolder sun.security.pkcs11.P11Key long sun.security.pkcs11.Session int int byte[] sun.security.pkcs11.Token sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        28: pop
        29: .line 1251
            aload 8 /* token */
            aload 9 /* opSession */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
            goto 36
        30: .line 1250
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        31: .line 1251
            aload 8 /* token */
            aload 9 /* opSession */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        32: .line 1252
            aload 10
            athrow
        33: .line 1251
      StackMap locals:
      StackMap stack:
            aload 8 /* token */
            aload 9 /* opSession */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        end local 9 // sun.security.pkcs11.Session opSession
        34: .line 1253
            goto 36
      StackMap locals: sun.security.pkcs11.NativeKeyHolder sun.security.pkcs11.P11Key long sun.security.pkcs11.Session int int byte[] sun.security.pkcs11.Token
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        35: pop
        36: .line 1257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new sun.security.pkcs11.SessionKeyRef
            dup
            aload 1 /* p11Key */
            lload 2 /* keyID */
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.wrapperKeyUsed:Z
        37: .line 1258
            aload 4 /* keySession */
            invokespecial sun.security.pkcs11.SessionKeyRef.<init>:(Lsun/security/pkcs11/P11Key;JZLsun/security/pkcs11/Session;)V
        38: .line 1257
            putfield sun.security.pkcs11.NativeKeyHolder.ref:Lsun/security/pkcs11/SessionKeyRef;
        end local 8 // sun.security.pkcs11.Token token
        39: .line 1260
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* ki */
            ifnull 40
            aload 7 /* ki */
            arraylength
            ifne 41
      StackMap locals:
      StackMap stack: sun.security.pkcs11.NativeKeyHolder
        40: aconst_null
            goto 42
      StackMap locals:
      StackMap stack: sun.security.pkcs11.NativeKeyHolder
        41: aload 7 /* ki */
      StackMap locals: sun.security.pkcs11.NativeKeyHolder sun.security.pkcs11.P11Key long sun.security.pkcs11.Session int int byte[]
      StackMap stack: sun.security.pkcs11.NativeKeyHolder byte[]
        42: putfield sun.security.pkcs11.NativeKeyHolder.nativeKeyInfo:[B
        43: .line 1261
            return
        end local 7 // byte[] ki
        end local 6 // boolean isTokenObject
        end local 5 // boolean extractKeyInfo
        end local 4 // sun.security.pkcs11.Session keySession
        end local 2 // long keyID
        end local 1 // sun.security.pkcs11.P11Key p11Key
        end local 0 // sun.security.pkcs11.NativeKeyHolder this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   44     0            this  Lsun/security/pkcs11/NativeKeyHolder;
            0   44     1          p11Key  Lsun/security/pkcs11/P11Key;
            0   44     2           keyID  J
            0   44     4      keySession  Lsun/security/pkcs11/Session;
            0   44     5  extractKeyInfo  Z
            0   44     6   isTokenObject  Z
            5   44     7              ki  [B
            9   39     8           token  Lsun/security/pkcs11/Token;
           22   34     9       opSession  Lsun/security/pkcs11/Session;
      Exception table:
        from    to  target  type
          12    18      19  any
          19    20      19  any
          22    27      28  Class sun.security.pkcs11.wrapper.PKCS11Exception
          22    29      30  any
          10    34      35  Class sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
                Name  Flags
      p11Key          
      keyID           
      keySession      
      extractKeyInfo  
      isTokenObject   

  long getKeyID();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=8, locals=7, args_size=1
        start local 0 // sun.security.pkcs11.NativeKeyHolder this
         0: .line 1264
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.nativeKeyInfo:[B
            ifnull 33
         1: .line 1265
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.nativeKeyInfo:[B
            dup
            astore 1
            monitorenter
         2: .line 1266
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.refCount:I
            iconst_m1
            if_icmpne 4
         3: .line 1267
            aload 0 /* this */
            iconst_0
            putfield sun.security.pkcs11.NativeKeyHolder.refCount:I
         4: .line 1269
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            dup
            getfield sun.security.pkcs11.NativeKeyHolder.refCount:I
            dup_x1
            iconst_1
            iadd
            putfield sun.security.pkcs11.NativeKeyHolder.refCount:I
            istore 2 /* cnt */
        start local 2 // int cnt
         5: .line 1270
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.keyID:J
            lconst_0
            lcmp
            ifne 27
         6: .line 1271
            iload 2 /* cnt */
            ifeq 10
         7: .line 1272
            new java.lang.RuntimeException
            dup
         8: .line 1273
            new java.lang.StringBuilder
            dup
            ldc "Error: null keyID with non-zero refCount "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* cnt */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 1272
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1275
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.p11Key:Lsun/security/pkcs11/P11Key;
            getfield sun.security.pkcs11.P11Key.token:Lsun/security/pkcs11/Token;
            astore 3 /* token */
        start local 3 // sun.security.pkcs11.Token token
        11: .line 1277
            aconst_null
            astore 4 /* session */
        start local 4 // sun.security.pkcs11.Session session
        12: .line 1279
            aload 3 /* token */
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            astore 4 /* session */
        13: .line 1280
            aload 0 /* this */
            aload 3 /* token */
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
        14: .line 1281
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.nativeKeyInfo:[B
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperKeyID:J
        15: .line 1282
            getstatic sun.security.pkcs11.NativeKeyHolder.nativeKeyWrapperMechanism:Lsun/security/pkcs11/wrapper/CK_MECHANISM;
        16: .line 1280
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.createNativeKey:(J[BJLsun/security/pkcs11/wrapper/CK_MECHANISM;)J
            putfield sun.security.pkcs11.NativeKeyHolder.keyID:J
        17: .line 1283
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.ref:Lsun/security/pkcs11/SessionKeyRef;
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.keyID:J
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.SessionKeyRef.registerNativeKey:(JLsun/security/pkcs11/Session;)V
        18: .line 1284
            goto 25
      StackMap locals: sun.security.pkcs11.NativeKeyHolder byte[] int sun.security.pkcs11.Token sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        19: astore 5 /* e */
        start local 5 // sun.security.pkcs11.wrapper.PKCS11Exception e
        20: .line 1285
            aload 0 /* this */
            dup
            getfield sun.security.pkcs11.NativeKeyHolder.refCount:I
            iconst_1
            isub
            putfield sun.security.pkcs11.NativeKeyHolder.refCount:I
        21: .line 1286
            new java.security.ProviderException
            dup
            ldc "Error recreating native key"
            aload 5 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // sun.security.pkcs11.wrapper.PKCS11Exception e
        22: .line 1287
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        23: .line 1288
            aload 3 /* token */
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        24: .line 1289
            aload 6
            athrow
        25: .line 1288
      StackMap locals:
      StackMap stack:
            aload 3 /* token */
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        end local 4 // sun.security.pkcs11.Session session
        end local 3 // sun.security.pkcs11.Token token
        26: .line 1290
            goto 29
        27: .line 1291
      StackMap locals:
      StackMap stack:
            iload 2 /* cnt */
            ifge 29
        28: .line 1292
            new java.lang.RuntimeException
            dup
            ldc "ERROR: negative refCount"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int cnt
        29: .line 1265
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        30: goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: aload 1
            monitorexit
        32: athrow
        33: .line 1297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.keyID:J
            lreturn
        end local 0 // sun.security.pkcs11.NativeKeyHolder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   34     0     this  Lsun/security/pkcs11/NativeKeyHolder;
            5   29     2      cnt  I
           11   26     3    token  Lsun/security/pkcs11/Token;
           12   26     4  session  Lsun/security/pkcs11/Session;
           20   22     5        e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
          12    18      19  Class sun.security.pkcs11.wrapper.PKCS11Exception
          12    22      22  any
           2    30      31  any
          31    32      31  any
    Exceptions:
      throws java.security.ProviderException

  void releaseKeyID();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.security.pkcs11.NativeKeyHolder this
         0: .line 1301
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.nativeKeyInfo:[B
            ifnull 17
         1: .line 1302
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.nativeKeyInfo:[B
            dup
            astore 1
            monitorenter
         2: .line 1303
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.refCount:I
            iconst_m1
            if_icmpne 4
         3: .line 1304
            new java.lang.RuntimeException
            dup
            ldc "Error: miss match getKeyID call"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1306
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            dup
            getfield sun.security.pkcs11.NativeKeyHolder.refCount:I
            iconst_1
            isub
            dup_x1
            putfield sun.security.pkcs11.NativeKeyHolder.refCount:I
            istore 2 /* cnt */
        start local 2 // int cnt
         5: .line 1307
            iload 2 /* cnt */
            ifne 11
         6: .line 1309
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.keyID:J
            lconst_0
            lcmp
            ifne 8
         7: .line 1310
            new java.lang.RuntimeException
            dup
            ldc "ERROR: null keyID can't be destroyed"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 1314
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield sun.security.pkcs11.NativeKeyHolder.keyID:J
         9: .line 1315
            aload 0 /* this */
            getfield sun.security.pkcs11.NativeKeyHolder.ref:Lsun/security/pkcs11/SessionKeyRef;
            invokevirtual sun.security.pkcs11.SessionKeyRef.removeNativeKey:()V
        10: .line 1316
            goto 13
        11: .line 1317
      StackMap locals:
      StackMap stack:
            iload 2 /* cnt */
            ifge 13
        12: .line 1319
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "wrong refCount value: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* cnt */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int cnt
        13: .line 1302
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 1
            monitorexit
        16: athrow
        17: .line 1324
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.security.pkcs11.NativeKeyHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   18     0  this  Lsun/security/pkcs11/NativeKeyHolder;
            5   13     2   cnt  I
      Exception table:
        from    to  target  type
           2    14      15  any
          15    16      15  any
}
SourceFile: "P11Key.java"