class sun.security.pkcs11.Token implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.security.pkcs11.Token
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2541527649100571747

  private static final long CHECK_INTERVAL;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 50

  final sun.security.pkcs11.SunPKCS11 provider;
    descriptor: Lsun/security/pkcs11/SunPKCS11;
    flags: (0x0010) ACC_FINAL

  final sun.security.pkcs11.wrapper.PKCS11 p11;
    descriptor: Lsun/security/pkcs11/wrapper/PKCS11;
    flags: (0x0010) ACC_FINAL

  final sun.security.pkcs11.Config config;
    descriptor: Lsun/security/pkcs11/Config;
    flags: (0x0010) ACC_FINAL

  final sun.security.pkcs11.wrapper.CK_TOKEN_INFO tokenInfo;
    descriptor: Lsun/security/pkcs11/wrapper/CK_TOKEN_INFO;
    flags: (0x0010) ACC_FINAL

  final sun.security.pkcs11.SessionManager sessionManager;
    descriptor: Lsun/security/pkcs11/SessionManager;
    flags: (0x0010) ACC_FINAL

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

  final boolean explicitCancel;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  final sun.security.pkcs11.KeyCache secretCache;
    descriptor: Lsun/security/pkcs11/KeyCache;
    flags: (0x0010) ACC_FINAL

  final sun.security.pkcs11.KeyCache privateCache;
    descriptor: Lsun/security/pkcs11/KeyCache;
    flags: (0x0010) ACC_FINAL

  private volatile sun.security.pkcs11.P11KeyFactory rsaFactory;
    descriptor: Lsun/security/pkcs11/P11KeyFactory;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile sun.security.pkcs11.P11KeyFactory dsaFactory;
    descriptor: Lsun/security/pkcs11/P11KeyFactory;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile sun.security.pkcs11.P11KeyFactory dhFactory;
    descriptor: Lsun/security/pkcs11/P11KeyFactory;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile sun.security.pkcs11.P11KeyFactory ecFactory;
    descriptor: Lsun/security/pkcs11/P11KeyFactory;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final java.util.Map<java.lang.Long, sun.security.pkcs11.wrapper.CK_MECHANISM_INFO> mechInfoMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Long;Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;>;

  private volatile sun.security.pkcs11.P11SecureRandom secureRandom;
    descriptor: Lsun/security/pkcs11/P11SecureRandom;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile sun.security.pkcs11.P11KeyStore keyStore;
    descriptor: Lsun/security/pkcs11/P11KeyStore;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final boolean removable;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile boolean valid;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

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

  private byte[] tokenId;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

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

  private volatile boolean loggedIn;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

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

  private static final java.lang.Object CHECK_LOCK;
    descriptor: Ljava/lang/Object;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final sun.security.pkcs11.wrapper.CK_MECHANISM_INFO INVALID_MECH;
    descriptor: Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.lang.Boolean supportsRawSecretKeyImport;
    descriptor: Ljava/lang/Boolean;
    flags: (0x0002) ACC_PRIVATE

  private static final java.util.List<java.lang.ref.Reference<sun.security.pkcs11.Token>> serializedTokens;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/ref/Reference<Lsun/security/pkcs11/Token;>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=0, args_size=0
         0: .line 120
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic sun.security.pkcs11.Token.CHECK_LOCK:Ljava/lang/Object;
         1: .line 124
            new sun.security.pkcs11.wrapper.CK_MECHANISM_INFO
            dup
            lconst_0
            lconst_0
            lconst_0
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM_INFO.<init>:(JJJ)V
         2: .line 123
            putstatic sun.security.pkcs11.Token.INVALID_MECH:Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
         3: .line 415
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
         4: .line 414
            putstatic sun.security.pkcs11.Token.serializedTokens:Ljava/util/List;
         5: .line 415
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(sun.security.pkcs11.SunPKCS11);
    descriptor: (Lsun/security/pkcs11/SunPKCS11;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // sun.security.pkcs11.SunPKCS11 provider
         0: .line 129
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 130
            aload 0 /* this */
            aload 1 /* provider */
            putfield sun.security.pkcs11.Token.provider:Lsun/security/pkcs11/SunPKCS11;
         2: .line 131
            aload 0 /* this */
            aload 1 /* provider */
            getfield sun.security.pkcs11.SunPKCS11.removable:Z
            putfield sun.security.pkcs11.Token.removable:Z
         3: .line 132
            aload 0 /* this */
            iconst_1
            putfield sun.security.pkcs11.Token.valid:Z
         4: .line 133
            aload 0 /* this */
            aload 1 /* provider */
            getfield sun.security.pkcs11.SunPKCS11.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            putfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
         5: .line 134
            aload 0 /* this */
            aload 1 /* provider */
            getfield sun.security.pkcs11.SunPKCS11.config:Lsun/security/pkcs11/Config;
            putfield sun.security.pkcs11.Token.config:Lsun/security/pkcs11/Config;
         6: .line 135
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 1 /* provider */
            getfield sun.security.pkcs11.SunPKCS11.slotID:J
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GetTokenInfo:(J)Lsun/security/pkcs11/wrapper/CK_TOKEN_INFO;
            putfield sun.security.pkcs11.Token.tokenInfo:Lsun/security/pkcs11/wrapper/CK_TOKEN_INFO;
         7: .line 136
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.tokenInfo:Lsun/security/pkcs11/wrapper/CK_TOKEN_INFO;
            getfield sun.security.pkcs11.wrapper.CK_TOKEN_INFO.flags:J
            ldc 2
            land
            lconst_0
            lcmp
            ifeq 8
            iconst_1
            goto 9
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.SunPKCS11
      StackMap stack: sun.security.pkcs11.Token
         8: iconst_0
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.SunPKCS11
      StackMap stack: sun.security.pkcs11.Token int
         9: putfield sun.security.pkcs11.Token.writeProtected:Z
        10: .line 140
            new sun.security.pkcs11.SessionManager
            dup
            aload 0 /* this */
            invokespecial sun.security.pkcs11.SessionManager.<init>:(Lsun/security/pkcs11/Token;)V
            astore 2 /* sessionManager */
        start local 2 // sun.security.pkcs11.SessionManager sessionManager
        11: .line 141
            aload 2 /* sessionManager */
            invokevirtual sun.security.pkcs11.SessionManager.getOpSession:()Lsun/security/pkcs11/Session;
            astore 3 /* s */
        start local 3 // sun.security.pkcs11.Session s
        12: .line 142
            aload 2 /* sessionManager */
            aload 3 /* s */
            invokevirtual sun.security.pkcs11.SessionManager.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        end local 3 // sun.security.pkcs11.Session s
        13: .line 143
            goto 21
        end local 2 // sun.security.pkcs11.SessionManager sessionManager
      StackMap locals:
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        14: astore 3 /* e */
        start local 3 // sun.security.pkcs11.wrapper.PKCS11Exception e
        15: .line 144
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.writeProtected:Z
            ifeq 17
        16: .line 145
            aload 3 /* e */
            athrow
        17: .line 149
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.SunPKCS11 top sun.security.pkcs11.wrapper.PKCS11Exception
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.security.pkcs11.Token.writeProtected:Z
        18: .line 150
            new sun.security.pkcs11.SessionManager
            dup
            aload 0 /* this */
            invokespecial sun.security.pkcs11.SessionManager.<init>:(Lsun/security/pkcs11/Token;)V
            astore 2 /* sessionManager */
        start local 2 // sun.security.pkcs11.SessionManager sessionManager
        19: .line 151
            aload 2 /* sessionManager */
            invokevirtual sun.security.pkcs11.SessionManager.getOpSession:()Lsun/security/pkcs11/Session;
            astore 4 /* s */
        start local 4 // sun.security.pkcs11.Session s
        20: .line 152
            aload 2 /* sessionManager */
            aload 4 /* s */
            invokevirtual sun.security.pkcs11.SessionManager.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        end local 4 // sun.security.pkcs11.Session s
        end local 3 // sun.security.pkcs11.wrapper.PKCS11Exception e
        21: .line 154
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.SunPKCS11 sun.security.pkcs11.SessionManager
      StackMap stack:
            aload 0 /* this */
            aload 2 /* sessionManager */
            putfield sun.security.pkcs11.Token.sessionManager:Lsun/security/pkcs11/SessionManager;
        22: .line 155
            aload 0 /* this */
            new sun.security.pkcs11.KeyCache
            dup
            invokespecial sun.security.pkcs11.KeyCache.<init>:()V
            putfield sun.security.pkcs11.Token.secretCache:Lsun/security/pkcs11/KeyCache;
        23: .line 156
            aload 0 /* this */
            new sun.security.pkcs11.KeyCache
            dup
            invokespecial sun.security.pkcs11.KeyCache.<init>:()V
            putfield sun.security.pkcs11.Token.privateCache:Lsun/security/pkcs11/KeyCache;
        24: .line 157
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.config:Lsun/security/pkcs11/Config;
            invokevirtual sun.security.pkcs11.Config.getTemplateManager:()Lsun/security/pkcs11/TemplateManager;
            putfield sun.security.pkcs11.Token.templateManager:Lsun/security/pkcs11/TemplateManager;
        25: .line 158
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.config:Lsun/security/pkcs11/Config;
            invokevirtual sun.security.pkcs11.Config.getExplicitCancel:()Z
            putfield sun.security.pkcs11.Token.explicitCancel:Z
        26: .line 159
            aload 0 /* this */
        27: .line 160
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 10
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
        28: .line 159
            putfield sun.security.pkcs11.Token.mechInfoMap:Ljava/util/Map;
        29: .line 161
            return
        end local 2 // sun.security.pkcs11.SessionManager sessionManager
        end local 1 // sun.security.pkcs11.SunPKCS11 provider
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   30     0            this  Lsun/security/pkcs11/Token;
            0   30     1        provider  Lsun/security/pkcs11/SunPKCS11;
           11   14     2  sessionManager  Lsun/security/pkcs11/SessionManager;
           19   30     2  sessionManager  Lsun/security/pkcs11/SessionManager;
           12   13     3               s  Lsun/security/pkcs11/Session;
           15   21     3               e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
           20   21     4               s  Lsun/security/pkcs11/Session;
      Exception table:
        from    to  target  type
          10    13      14  Class sun.security.pkcs11.wrapper.PKCS11Exception
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
          Name  Flags
      provider  

  boolean isWriteProtected();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 164
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.writeProtected:Z
            ireturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/pkcs11/Token;

  boolean supportsRawSecretKeyImport();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=8, locals=6, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 169
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.supportsRawSecretKeyImport:Ljava/lang/Boolean;
            ifnonnull 23
         1: .line 170
            invokestatic sun.security.jca.JCAUtil.getSecureRandom:()Ljava/security/SecureRandom;
            astore 1 /* random */
        start local 1 // java.security.SecureRandom random
         2: .line 171
            bipush 48
            newarray 8
            astore 2 /* encoded */
        start local 2 // byte[] encoded
         3: .line 172
            aload 1 /* random */
            aload 2 /* encoded */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         4: .line 174
            iconst_3
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            astore 3 /* attributes */
        start local 3 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
         5: .line 175
            aload 3 /* attributes */
            iconst_0
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            lconst_0
            ldc 4
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
         6: .line 176
            aload 3 /* attributes */
            iconst_1
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 256
            ldc 16
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
         7: .line 177
            aload 3 /* attributes */
            iconst_2
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 17
            aload 2 /* encoded */
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/lang/Object;)V
            aastore
         8: .line 179
            aconst_null
            astore 4 /* session */
        start local 4 // sun.security.pkcs11.Session session
         9: .line 181
            aload 0 /* this */
            ldc "import"
        10: .line 182
            ldc 4
            ldc 16
            aload 3 /* attributes */
        11: .line 181
            invokevirtual sun.security.pkcs11.Token.getAttributes:(Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            astore 3 /* attributes */
        12: .line 183
            aload 0 /* this */
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            astore 4 /* session */
        13: .line 184
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 3 /* attributes */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_CreateObject:(J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J
            pop2
        14: .line 186
            aload 0 /* this */
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            putfield sun.security.pkcs11.Token.supportsRawSecretKeyImport:Ljava/lang/Boolean;
        15: .line 187
            goto 22
      StackMap locals: sun.security.pkcs11.Token java.security.SecureRandom byte[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        16: pop
        17: .line 188
            aload 0 /* this */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            putfield sun.security.pkcs11.Token.supportsRawSecretKeyImport:Ljava/lang/Boolean;
        18: .line 190
            aload 0 /* this */
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
            goto 23
        19: .line 189
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        20: .line 190
            aload 0 /* this */
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        21: .line 191
            aload 5
            athrow
        22: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            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.wrapper.CK_ATTRIBUTE[] attributes
        end local 2 // byte[] encoded
        end local 1 // java.security.SecureRandom random
        23: .line 194
      StackMap locals: sun.security.pkcs11.Token
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.supportsRawSecretKeyImport:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Lsun/security/pkcs11/Token;
            2   23     1      random  Ljava/security/SecureRandom;
            3   23     2     encoded  [B
            5   23     3  attributes  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            9   23     4     session  Lsun/security/pkcs11/Session;
      Exception table:
        from    to  target  type
           9    15      16  Class sun.security.pkcs11.wrapper.PKCS11Exception
           9    18      19  any

  boolean isLoggedIn(sun.security.pkcs11.Session);
    descriptor: (Lsun/security/pkcs11/Session;)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // sun.security.pkcs11.Session session
         0: .line 201
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.loggedIn:Z
            istore 2 /* loggedIn */
        start local 2 // boolean loggedIn
         1: .line 202
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 3 /* time */
        start local 3 // long time
         2: .line 203
            lload 3 /* time */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.lastLoginCheck:J
            lsub
            ldc 50
            lcmp
            ifle 5
         3: .line 204
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual sun.security.pkcs11.Token.isLoggedInNow:(Lsun/security/pkcs11/Session;)Z
            istore 2 /* loggedIn */
         4: .line 205
            aload 0 /* this */
            lload 3 /* time */
            putfield sun.security.pkcs11.Token.lastLoginCheck:J
         5: .line 207
      StackMap locals: int long
      StackMap stack:
            iload 2 /* loggedIn */
            ireturn
        end local 3 // long time
        end local 2 // boolean loggedIn
        end local 1 // sun.security.pkcs11.Session session
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lsun/security/pkcs11/Token;
            0    6     1   session  Lsun/security/pkcs11/Session;
            1    6     2  loggedIn  Z
            2    6     3      time  J
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
         Name  Flags
      session  

  boolean isLoggedInNow(sun.security.pkcs11.Session);
    descriptor: (Lsun/security/pkcs11/Session;)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // sun.security.pkcs11.Session session
         0: .line 213
            aload 1 /* session */
            ifnonnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* allocSession */
        start local 2 // boolean allocSession
         3: .line 215
            iload 2 /* allocSession */
            ifeq 5
         4: .line 216
            aload 0 /* this */
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 1 /* session */
         5: .line 218
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 1 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GetSessionInfo:(J)Lsun/security/pkcs11/wrapper/CK_SESSION_INFO;
            astore 3 /* info */
        start local 3 // sun.security.pkcs11.wrapper.CK_SESSION_INFO info
         6: .line 219
            aload 3 /* info */
            getfield sun.security.pkcs11.wrapper.CK_SESSION_INFO.state:J
            lconst_1
            lcmp
            ifeq 9
         7: .line 220
            aload 3 /* info */
            getfield sun.security.pkcs11.wrapper.CK_SESSION_INFO.state:J
            ldc 3
            lcmp
            ifeq 9
         8: .line 219
            iconst_0
            goto 10
      StackMap locals: sun.security.pkcs11.wrapper.CK_SESSION_INFO
      StackMap stack:
         9: iconst_1
      StackMap locals:
      StackMap stack: int
        10: istore 4 /* loggedIn */
        start local 4 // boolean loggedIn
        11: .line 221
            aload 0 /* this */
            iload 4 /* loggedIn */
            putfield sun.security.pkcs11.Token.loggedIn:Z
        12: .line 222
            iload 4 /* loggedIn */
            istore 6
        13: .line 224
            iload 2 /* allocSession */
            ifeq 15
        14: .line 225
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        15: .line 222
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.Session int sun.security.pkcs11.wrapper.CK_SESSION_INFO int top int
      StackMap stack:
            iload 6
            ireturn
        end local 4 // boolean loggedIn
        end local 3 // sun.security.pkcs11.wrapper.CK_SESSION_INFO info
        16: .line 223
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.Session int
      StackMap stack: java.lang.Throwable
            astore 5
        17: .line 224
            iload 2 /* allocSession */
            ifeq 19
        18: .line 225
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        19: .line 227
      StackMap locals: sun.security.pkcs11.Token sun.security.pkcs11.Session int top top java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        end local 2 // boolean allocSession
        end local 1 // sun.security.pkcs11.Session session
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   20     0          this  Lsun/security/pkcs11/Token;
            0   20     1       session  Lsun/security/pkcs11/Session;
            3   20     2  allocSession  Z
            6   16     3          info  Lsun/security/pkcs11/wrapper/CK_SESSION_INFO;
           11   16     4      loggedIn  Z
      Exception table:
        from    to  target  type
           3    13      16  any
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
         Name  Flags
      session  

  void ensureLoggedIn(sun.security.pkcs11.Session);
    descriptor: (Lsun/security/pkcs11/Session;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // sun.security.pkcs11.Session session
         0: .line 233
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual sun.security.pkcs11.Token.isLoggedIn:(Lsun/security/pkcs11/Session;)Z
            ifne 2
         1: .line 234
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.provider:Lsun/security/pkcs11/SunPKCS11;
            aconst_null
            aconst_null
            invokevirtual sun.security.pkcs11.SunPKCS11.login:(Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;)V
         2: .line 236
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.security.pkcs11.Session session
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lsun/security/pkcs11/Token;
            0    3     1  session  Lsun/security/pkcs11/Session;
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception, javax.security.auth.login.LoginException
    MethodParameters:
         Name  Flags
      session  

  boolean isValid();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 241
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.removable:Z
            ifne 2
         1: .line 242
            iconst_1
            ireturn
         2: .line 244
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.valid:Z
            ireturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/security/pkcs11/Token;

  void ensureValid();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 248
            aload 0 /* this */
            invokevirtual sun.security.pkcs11.Token.isValid:()Z
            ifne 2
         1: .line 249
            new java.security.ProviderException
            dup
            ldc "Token has been removed"
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 251
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/security/pkcs11/Token;

  boolean isPresent(long);
    descriptor: (J)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // long sessionID
         0: .line 256
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.removable:Z
            ifne 2
         1: .line 257
            iconst_1
            ireturn
         2: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.valid:Z
            ifne 4
         3: .line 260
            iconst_0
            ireturn
         4: .line 262
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 3 /* time */
        start local 3 // long time
         5: .line 263
            lload 3 /* time */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.lastPresentCheck:J
            lsub
            ldc 50
            lcmp
            iflt 26
         6: .line 264
            getstatic sun.security.pkcs11.Token.CHECK_LOCK:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         7: .line 265
            lload 3 /* time */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.lastPresentCheck:J
            lsub
            ldc 50
            lcmp
            iflt 22
         8: .line 266
            iconst_0
            istore 6 /* ok */
        start local 6 // boolean ok
         9: .line 270
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.provider:Lsun/security/pkcs11/SunPKCS11;
            getfield sun.security.pkcs11.SunPKCS11.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.provider:Lsun/security/pkcs11/SunPKCS11;
            getfield sun.security.pkcs11.SunPKCS11.slotID:J
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GetSlotInfo:(J)Lsun/security/pkcs11/wrapper/CK_SLOT_INFO;
        10: .line 269
            astore 7 /* slotInfo */
        start local 7 // sun.security.pkcs11.wrapper.CK_SLOT_INFO slotInfo
        11: .line 271
            aload 7 /* slotInfo */
            getfield sun.security.pkcs11.wrapper.CK_SLOT_INFO.flags:J
            lconst_1
            land
            lconst_0
            lcmp
            ifeq 18
        12: .line 275
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.provider:Lsun/security/pkcs11/SunPKCS11;
            getfield sun.security.pkcs11.SunPKCS11.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        13: .line 276
            lload 1 /* sessionID */
        14: .line 275
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GetSessionInfo:(J)Lsun/security/pkcs11/wrapper/CK_SESSION_INFO;
            pop
        15: .line 277
            iconst_1
            istore 6 /* ok */
        end local 7 // sun.security.pkcs11.wrapper.CK_SLOT_INFO slotInfo
        16: .line 279
            goto 18
      StackMap locals: sun.security.pkcs11.Token long long java.lang.Object int
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        17: pop
        18: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 6 /* ok */
            putfield sun.security.pkcs11.Token.valid:Z
        19: .line 283
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield sun.security.pkcs11.Token.lastPresentCheck:J
        20: .line 284
            iload 6 /* ok */
            ifne 22
        21: .line 285
            aload 0 /* this */
            invokevirtual sun.security.pkcs11.Token.destroy:()V
        end local 6 // boolean ok
        22: .line 264
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        23: goto 26
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: aload 5
            monitorexit
        25: athrow
        26: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.valid:Z
            ireturn
        end local 3 // long time
        end local 1 // long sessionID
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   27     0       this  Lsun/security/pkcs11/Token;
            0   27     1  sessionID  J
            5   27     3       time  J
            9   22     6         ok  Z
           11   16     7   slotInfo  Lsun/security/pkcs11/wrapper/CK_SLOT_INFO;
      Exception table:
        from    to  target  type
           9    16      17  Class sun.security.pkcs11.wrapper.PKCS11Exception
           7    23      24  any
          24    25      24  any
    MethodParameters:
           Name  Flags
      sessionID  

  void destroy();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 294
            aload 0 /* this */
            iconst_0
            putfield sun.security.pkcs11.Token.valid:Z
         1: .line 295
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.provider:Lsun/security/pkcs11/SunPKCS11;
            aload 0 /* this */
            invokevirtual sun.security.pkcs11.SunPKCS11.uninitToken:(Lsun/security/pkcs11/Token;)V
         2: .line 296
            return
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/security/pkcs11/Token;

  sun.security.pkcs11.Session getObjSession();
    descriptor: ()Lsun/security/pkcs11/Session;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 299
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.sessionManager:Lsun/security/pkcs11/SessionManager;
            invokevirtual sun.security.pkcs11.SessionManager.getObjSession:()Lsun/security/pkcs11/Session;
            areturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/pkcs11/Token;
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception

  sun.security.pkcs11.Session getOpSession();
    descriptor: ()Lsun/security/pkcs11/Session;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 303
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.sessionManager:Lsun/security/pkcs11/SessionManager;
            invokevirtual sun.security.pkcs11.SessionManager.getOpSession:()Lsun/security/pkcs11/Session;
            areturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/pkcs11/Token;
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception

  sun.security.pkcs11.Session releaseSession(sun.security.pkcs11.Session);
    descriptor: (Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // sun.security.pkcs11.Session session
         0: .line 307
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.sessionManager:Lsun/security/pkcs11/SessionManager;
            aload 1 /* session */
            invokevirtual sun.security.pkcs11.SessionManager.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            areturn
        end local 1 // sun.security.pkcs11.Session session
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/pkcs11/Token;
            0    1     1  session  Lsun/security/pkcs11/Session;
    MethodParameters:
         Name  Flags
      session  

  sun.security.pkcs11.Session killSession(sun.security.pkcs11.Session);
    descriptor: (Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // sun.security.pkcs11.Session session
         0: .line 311
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.sessionManager:Lsun/security/pkcs11/SessionManager;
            aload 1 /* session */
            invokevirtual sun.security.pkcs11.SessionManager.killSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            areturn
        end local 1 // sun.security.pkcs11.Session session
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/pkcs11/Token;
            0    1     1  session  Lsun/security/pkcs11/Session;
    MethodParameters:
         Name  Flags
      session  

  sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] getAttributes(java.lang.String, long, long, sun.security.pkcs11.wrapper.CK_ATTRIBUTE[]);
    descriptor: (Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
    flags: (0x0000) 
    Code:
      stack=7, locals=13, args_size=5
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // java.lang.String op
        start local 2 // long type
        start local 4 // long alg
        start local 6 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attrs
         0: .line 317
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.templateManager:Lsun/security/pkcs11/TemplateManager;
            aload 1 /* op */
            lload 2 /* type */
            lload 4 /* alg */
            aload 6 /* attrs */
            invokevirtual sun.security.pkcs11.TemplateManager.getAttributes:(Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
         1: .line 316
            astore 7 /* newAttrs */
        start local 7 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] newAttrs
         2: .line 318
            aload 7 /* newAttrs */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 11
      StackMap locals: sun.security.pkcs11.Token java.lang.String long long sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] top int int sun.security.pkcs11.wrapper.CK_ATTRIBUTE[]
      StackMap stack:
         3: aload 11
            iload 9
            aaload
            astore 8 /* attr */
        start local 8 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE attr
         4: .line 319
            aload 8 /* attr */
            getfield sun.security.pkcs11.wrapper.CK_ATTRIBUTE.type:J
            lconst_1
            lcmp
            ifne 10
         5: .line 320
            aload 8 /* attr */
            invokevirtual sun.security.pkcs11.wrapper.CK_ATTRIBUTE.getBoolean:()Z
            ifeq 12
         6: .line 322
            aload 0 /* this */
            aconst_null
            invokevirtual sun.security.pkcs11.Token.ensureLoggedIn:(Lsun/security/pkcs11/Session;)V
         7: .line 323
            goto 12
      StackMap locals: sun.security.pkcs11.Token java.lang.String long long sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE int int sun.security.pkcs11.wrapper.CK_ATTRIBUTE[]
      StackMap stack: javax.security.auth.login.LoginException
         8: astore 12 /* e */
        start local 12 // javax.security.auth.login.LoginException e
         9: .line 324
            new java.security.ProviderException
            dup
            ldc "Login failed"
            aload 12 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 12 // javax.security.auth.login.LoginException e
        end local 8 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE attr
        10: .line 318
      StackMap locals: sun.security.pkcs11.Token java.lang.String long long sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] top int int sun.security.pkcs11.wrapper.CK_ATTRIBUTE[]
      StackMap stack:
            iinc 9 1
      StackMap locals:
      StackMap stack:
        11: iload 9
            iload 10
            if_icmplt 3
        12: .line 331
      StackMap locals: sun.security.pkcs11.Token java.lang.String long long sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[]
      StackMap stack:
            aload 7 /* newAttrs */
            areturn
        end local 7 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] newAttrs
        end local 6 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attrs
        end local 4 // long alg
        end local 2 // long type
        end local 1 // java.lang.String op
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lsun/security/pkcs11/Token;
            0   13     1        op  Ljava/lang/String;
            0   13     2      type  J
            0   13     4       alg  J
            0   13     6     attrs  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            2   13     7  newAttrs  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            4   10     8      attr  Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            9   10    12         e  Ljavax/security/auth/login/LoginException;
      Exception table:
        from    to  target  type
           6     7       8  Class javax.security.auth.login.LoginException
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
       Name  Flags
      op     
      type   
      alg    
      attrs  

  sun.security.pkcs11.P11KeyFactory getKeyFactory(java.lang.String);
    descriptor: (Ljava/lang/String;)Lsun/security/pkcs11/P11KeyFactory;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // java.lang.String algorithm
         0: .line 336
            aload 1 /* algorithm */
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         1: .line 337
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.rsaFactory:Lsun/security/pkcs11/P11KeyFactory;
            astore 2 /* f */
        start local 2 // sun.security.pkcs11.P11KeyFactory f
         2: .line 338
            aload 2 /* f */
            ifnonnull 25
         3: .line 339
            new sun.security.pkcs11.P11RSAKeyFactory
            dup
            aload 0 /* this */
            aload 1 /* algorithm */
            invokespecial sun.security.pkcs11.P11RSAKeyFactory.<init>:(Lsun/security/pkcs11/Token;Ljava/lang/String;)V
            astore 2 /* f */
         4: .line 340
            aload 0 /* this */
            aload 2 /* f */
            putfield sun.security.pkcs11.Token.rsaFactory:Lsun/security/pkcs11/P11KeyFactory;
         5: .line 342
            goto 25
        end local 2 // sun.security.pkcs11.P11KeyFactory f
      StackMap locals:
      StackMap stack:
         6: aload 1 /* algorithm */
            ldc "DSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 12
         7: .line 343
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.dsaFactory:Lsun/security/pkcs11/P11KeyFactory;
            astore 2 /* f */
        start local 2 // sun.security.pkcs11.P11KeyFactory f
         8: .line 344
            aload 2 /* f */
            ifnonnull 25
         9: .line 345
            new sun.security.pkcs11.P11DSAKeyFactory
            dup
            aload 0 /* this */
            aload 1 /* algorithm */
            invokespecial sun.security.pkcs11.P11DSAKeyFactory.<init>:(Lsun/security/pkcs11/Token;Ljava/lang/String;)V
            astore 2 /* f */
        10: .line 346
            aload 0 /* this */
            aload 2 /* f */
            putfield sun.security.pkcs11.Token.dsaFactory:Lsun/security/pkcs11/P11KeyFactory;
        11: .line 348
            goto 25
        end local 2 // sun.security.pkcs11.P11KeyFactory f
      StackMap locals:
      StackMap stack:
        12: aload 1 /* algorithm */
            ldc "DH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 18
        13: .line 349
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.dhFactory:Lsun/security/pkcs11/P11KeyFactory;
            astore 2 /* f */
        start local 2 // sun.security.pkcs11.P11KeyFactory f
        14: .line 350
            aload 2 /* f */
            ifnonnull 25
        15: .line 351
            new sun.security.pkcs11.P11DHKeyFactory
            dup
            aload 0 /* this */
            aload 1 /* algorithm */
            invokespecial sun.security.pkcs11.P11DHKeyFactory.<init>:(Lsun/security/pkcs11/Token;Ljava/lang/String;)V
            astore 2 /* f */
        16: .line 352
            aload 0 /* this */
            aload 2 /* f */
            putfield sun.security.pkcs11.Token.dhFactory:Lsun/security/pkcs11/P11KeyFactory;
        17: .line 354
            goto 25
        end local 2 // sun.security.pkcs11.P11KeyFactory f
      StackMap locals:
      StackMap stack:
        18: aload 1 /* algorithm */
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 24
        19: .line 355
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.ecFactory:Lsun/security/pkcs11/P11KeyFactory;
            astore 2 /* f */
        start local 2 // sun.security.pkcs11.P11KeyFactory f
        20: .line 356
            aload 2 /* f */
            ifnonnull 25
        21: .line 357
            new sun.security.pkcs11.P11ECKeyFactory
            dup
            aload 0 /* this */
            aload 1 /* algorithm */
            invokespecial sun.security.pkcs11.P11ECKeyFactory.<init>:(Lsun/security/pkcs11/Token;Ljava/lang/String;)V
            astore 2 /* f */
        22: .line 358
            aload 0 /* this */
            aload 2 /* f */
            putfield sun.security.pkcs11.Token.ecFactory:Lsun/security/pkcs11/P11KeyFactory;
        23: .line 360
            goto 25
        end local 2 // sun.security.pkcs11.P11KeyFactory f
        24: .line 361
      StackMap locals:
      StackMap stack:
            new java.security.ProviderException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown algorithm "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* algorithm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        start local 2 // sun.security.pkcs11.P11KeyFactory f
        25: .line 363
      StackMap locals: sun.security.pkcs11.P11KeyFactory
      StackMap stack:
            aload 2 /* f */
            areturn
        end local 2 // sun.security.pkcs11.P11KeyFactory f
        end local 1 // java.lang.String algorithm
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   26     0       this  Lsun/security/pkcs11/Token;
            0   26     1  algorithm  Ljava/lang/String;
            2    6     2          f  Lsun/security/pkcs11/P11KeyFactory;
            8   12     2          f  Lsun/security/pkcs11/P11KeyFactory;
           14   18     2          f  Lsun/security/pkcs11/P11KeyFactory;
           20   24     2          f  Lsun/security/pkcs11/P11KeyFactory;
           25   26     2          f  Lsun/security/pkcs11/P11KeyFactory;
    MethodParameters:
           Name  Flags
      algorithm  

  sun.security.pkcs11.P11SecureRandom getRandom();
    descriptor: ()Lsun/security/pkcs11/P11SecureRandom;
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 367
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.secureRandom:Lsun/security/pkcs11/P11SecureRandom;
            ifnonnull 2
         1: .line 368
            aload 0 /* this */
            new sun.security.pkcs11.P11SecureRandom
            dup
            aload 0 /* this */
            invokespecial sun.security.pkcs11.P11SecureRandom.<init>:(Lsun/security/pkcs11/Token;)V
            putfield sun.security.pkcs11.Token.secureRandom:Lsun/security/pkcs11/P11SecureRandom;
         2: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.secureRandom:Lsun/security/pkcs11/P11SecureRandom;
            areturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/security/pkcs11/Token;

  sun.security.pkcs11.P11KeyStore getKeyStore();
    descriptor: ()Lsun/security/pkcs11/P11KeyStore;
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 374
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.keyStore:Lsun/security/pkcs11/P11KeyStore;
            ifnonnull 2
         1: .line 375
            aload 0 /* this */
            new sun.security.pkcs11.P11KeyStore
            dup
            aload 0 /* this */
            invokespecial sun.security.pkcs11.P11KeyStore.<init>:(Lsun/security/pkcs11/Token;)V
            putfield sun.security.pkcs11.Token.keyStore:Lsun/security/pkcs11/P11KeyStore;
         2: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.keyStore:Lsun/security/pkcs11/P11KeyStore;
            areturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/security/pkcs11/Token;

  sun.security.pkcs11.wrapper.CK_MECHANISM_INFO getMechanismInfo(long);
    descriptor: (J)Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // sun.security.pkcs11.Token this
        start local 1 // long mechanism
         0: .line 381
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.mechInfoMap:Ljava/util/Map;
            lload 1 /* mechanism */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.pkcs11.wrapper.CK_MECHANISM_INFO
            astore 3 /* result */
        start local 3 // sun.security.pkcs11.wrapper.CK_MECHANISM_INFO result
         1: .line 382
            aload 3 /* result */
            ifnonnull 12
         2: .line 384
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.provider:Lsun/security/pkcs11/SunPKCS11;
            getfield sun.security.pkcs11.SunPKCS11.slotID:J
         3: .line 385
            lload 1 /* mechanism */
         4: .line 384
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GetMechanismInfo:(JJ)Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
            astore 3 /* result */
         5: .line 386
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.mechInfoMap:Ljava/util/Map;
            lload 1 /* mechanism */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 3 /* result */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 387
            goto 14
      StackMap locals: sun.security.pkcs11.Token long sun.security.pkcs11.wrapper.CK_MECHANISM_INFO
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
         7: astore 4 /* e */
        start local 4 // sun.security.pkcs11.wrapper.PKCS11Exception e
         8: .line 388
            aload 4 /* e */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11Exception.getErrorCode:()J
            ldc 112
            lcmp
            ifeq 10
         9: .line 389
            aload 4 /* e */
            athrow
        10: .line 391
      StackMap locals: sun.security.pkcs11.wrapper.PKCS11Exception
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.mechInfoMap:Ljava/util/Map;
            lload 1 /* mechanism */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            getstatic sun.security.pkcs11.Token.INVALID_MECH:Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // sun.security.pkcs11.wrapper.PKCS11Exception e
        11: .line 394
            goto 14
      StackMap locals:
      StackMap stack:
        12: aload 3 /* result */
            getstatic sun.security.pkcs11.Token.INVALID_MECH:Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
            if_acmpne 14
        13: .line 395
            aconst_null
            astore 3 /* result */
        14: .line 397
      StackMap locals:
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 3 // sun.security.pkcs11.wrapper.CK_MECHANISM_INFO result
        end local 1 // long mechanism
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lsun/security/pkcs11/Token;
            0   15     1  mechanism  J
            1   15     3     result  Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
            8   11     4          e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
           2     6       7  Class sun.security.pkcs11.wrapper.PKCS11Exception
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
           Name  Flags
      mechanism  

  private synchronized byte[] getTokenId();
    descriptor: ()[B
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 401
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.tokenId:[B
            ifnonnull 5
         1: .line 402
            invokestatic sun.security.jca.JCAUtil.getSecureRandom:()Ljava/security/SecureRandom;
            astore 1 /* random */
        start local 1 // java.security.SecureRandom random
         2: .line 403
            aload 0 /* this */
            bipush 20
            newarray 8
            putfield sun.security.pkcs11.Token.tokenId:[B
         3: .line 404
            aload 1 /* random */
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.tokenId:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         4: .line 405
            getstatic sun.security.pkcs11.Token.serializedTokens:Ljava/util/List;
            new java.lang.ref.WeakReference
            dup
            aload 0 /* this */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 1 // java.security.SecureRandom random
         5: .line 407
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.Token.tokenId:[B
            areturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/security/pkcs11/Token;
            2    5     1  random  Ljava/security/SecureRandom;

  private java.lang.Object writeReplace();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.Token this
         0: .line 418
            aload 0 /* this */
            invokevirtual sun.security.pkcs11.Token.isValid:()Z
            ifne 2
         1: .line 419
            new java.io.NotSerializableException
            dup
            ldc "Token has been removed"
            invokespecial java.io.NotSerializableException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 421
      StackMap locals:
      StackMap stack:
            new sun.security.pkcs11.Token$TokenRep
            dup
            aload 0 /* this */
            invokespecial sun.security.pkcs11.Token$TokenRep.<init>:(Lsun/security/pkcs11/Token;)V
            areturn
        end local 0 // sun.security.pkcs11.Token this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/security/pkcs11/Token;
    Exceptions:
      throws java.io.ObjectStreamException
}
SourceFile: "Token.java"
NestMembers:
  sun.security.pkcs11.Token$TokenRep
InnerClasses:
  private TokenRep = sun.security.pkcs11.Token$TokenRep of sun.security.pkcs11.Token