final class sun.security.smartcardio.CardImpl extends javax.smartcardio.Card
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.smartcardio.CardImpl
super_class: javax.smartcardio.Card
{
private final sun.security.smartcardio.TerminalImpl terminal;
descriptor: Lsun/security/smartcardio/TerminalImpl;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final long cardId;
descriptor: J
flags: (0x0010) ACC_FINAL
private final javax.smartcardio.ATR atr;
descriptor: Ljavax/smartcardio/ATR;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final int protocol;
descriptor: I
flags: (0x0010) ACC_FINAL
private final sun.security.smartcardio.ChannelImpl basicChannel;
descriptor: Lsun/security/smartcardio/ChannelImpl;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile sun.security.smartcardio.CardImpl$State state;
descriptor: Lsun/security/smartcardio/CardImpl$State;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile java.lang.Thread exclusiveThread;
descriptor: Ljava/lang/Thread;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private static final boolean isWindows;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static byte[] commandOpenChannel;
descriptor: [B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final boolean invertReset;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: invokedynamic run()Ljava/security/PrivilegedAction;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
sun/security/smartcardio/CardImpl.lambda$0()Ljava/lang/String; (6)
()Ljava/lang/String;
1: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 0
start local 0 2: aload 0
ldc "Windows"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
putstatic sun.security.smartcardio.CardImpl.isWindows:Z
end local 0 3: iconst_5
newarray 8
dup
iconst_1
bipush 112
bastore
dup
iconst_4
iconst_1
bastore
putstatic sun.security.smartcardio.CardImpl.commandOpenChannel:[B
4: new sun.security.action.GetPropertyAction
dup
5: ldc "sun.security.smartcardio.invertCardReset"
ldc "false"
6: invokespecial sun.security.action.GetPropertyAction.<init>:(Ljava/lang/String;Ljava/lang/String;)V
7: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
8: invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
9: putstatic sun.security.smartcardio.CardImpl.invertReset:Z
10: return
LocalVariableTable:
Start End Slot Name Signature
2 3 0 osName Ljava/lang/String;
void <init>(sun.security.smartcardio.TerminalImpl, java.lang.String);
descriptor: (Lsun/security/smartcardio/TerminalImpl;Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=6, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial javax.smartcardio.Card.<init>:()V
1: aload 0
aload 1
putfield sun.security.smartcardio.CardImpl.terminal:Lsun/security/smartcardio/TerminalImpl;
2: iconst_2
istore 3
start local 3 3: aload 2
ldc "*"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 6
4: iconst_3
istore 4
start local 4 5: goto 19
end local 4 StackMap locals: sun.security.smartcardio.CardImpl sun.security.smartcardio.TerminalImpl java.lang.String int
StackMap stack:
6: aload 2
ldc "T=0"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 9
7: iconst_1
istore 4
start local 4 8: goto 19
end local 4 StackMap locals:
StackMap stack:
9: aload 2
ldc "T=1"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 12
10: iconst_2
istore 4
start local 4 11: goto 19
end local 4 StackMap locals:
StackMap stack:
12: aload 2
ldc "direct"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 18
13: getstatic sun.security.smartcardio.CardImpl.isWindows:Z
ifeq 14
iconst_0
goto 15
StackMap locals:
StackMap stack:
14: iconst_4
StackMap locals:
StackMap stack: int
15: istore 4
start local 4 16: iconst_3
istore 3
17: goto 19
end local 4 18: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported protocol "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
start local 4 19: StackMap locals: int
StackMap stack:
aload 0
aload 1
getfield sun.security.smartcardio.TerminalImpl.contextId:J
aload 1
getfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
20: iload 3
iload 4
21: invokestatic sun.security.smartcardio.PCSC.SCardConnect:(JLjava/lang/String;II)J
putfield sun.security.smartcardio.CardImpl.cardId:J
22: iconst_2
newarray 8
astore 5
start local 5 23: aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
aload 5
invokestatic sun.security.smartcardio.PCSC.SCardStatus:(J[B)[B
astore 6
start local 6 24: aload 0
new javax.smartcardio.ATR
dup
aload 6
invokespecial javax.smartcardio.ATR.<init>:([B)V
putfield sun.security.smartcardio.CardImpl.atr:Ljavax/smartcardio/ATR;
25: aload 0
aload 5
iconst_1
baload
sipush 255
iand
putfield sun.security.smartcardio.CardImpl.protocol:I
26: aload 0
new sun.security.smartcardio.ChannelImpl
dup
aload 0
iconst_0
invokespecial sun.security.smartcardio.ChannelImpl.<init>:(Lsun/security/smartcardio/CardImpl;I)V
putfield sun.security.smartcardio.CardImpl.basicChannel:Lsun/security/smartcardio/ChannelImpl;
27: aload 0
getstatic sun.security.smartcardio.CardImpl$State.OK:Lsun/security/smartcardio/CardImpl$State;
putfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
28: return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lsun/security/smartcardio/CardImpl;
0 29 1 terminal Lsun/security/smartcardio/TerminalImpl;
0 29 2 protocol Ljava/lang/String;
3 29 3 sharingMode I
5 6 4 connectProtocol I
8 9 4 connectProtocol I
11 12 4 connectProtocol I
16 18 4 connectProtocol I
19 29 4 connectProtocol I
23 29 5 status [B
24 29 6 atrBytes [B
Exceptions:
throws sun.security.smartcardio.PCSCException
MethodParameters:
Name Flags
terminal
protocol
void checkState();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
astore 1
start local 1 1: aload 1
getstatic sun.security.smartcardio.CardImpl$State.DISCONNECTED:Lsun/security/smartcardio/CardImpl$State;
if_acmpne 3
2: new java.lang.IllegalStateException
dup
ldc "Card has been disconnected"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: sun.security.smartcardio.CardImpl$State
StackMap stack:
aload 1
getstatic sun.security.smartcardio.CardImpl$State.REMOVED:Lsun/security/smartcardio/CardImpl$State;
if_acmpne 5
4: new java.lang.IllegalStateException
dup
ldc "Card has been removed"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/smartcardio/CardImpl;
1 6 1 s Lsun/security/smartcardio/CardImpl$State;
boolean isValid();
descriptor: ()Z
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
getstatic sun.security.smartcardio.CardImpl$State.OK:Lsun/security/smartcardio/CardImpl$State;
if_acmpeq 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
iconst_2
newarray 8
invokestatic sun.security.smartcardio.PCSC.SCardStatus:(J[B)[B
pop
3: iconst_1
ireturn
4: StackMap locals:
StackMap stack: sun.security.smartcardio.PCSCException
pop
5: aload 0
getstatic sun.security.smartcardio.CardImpl$State.REMOVED:Lsun/security/smartcardio/CardImpl$State;
putfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
6: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/security/smartcardio/CardImpl;
Exception table:
from to target type
2 3 4 Class sun.security.smartcardio.PCSCException
private void checkSecurity(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 2
new javax.smartcardio.CardPermission
dup
aload 0
getfield sun.security.smartcardio.CardImpl.terminal:Lsun/security/smartcardio/TerminalImpl;
getfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
aload 1
invokespecial javax.smartcardio.CardPermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
3: StackMap locals: java.lang.SecurityManager
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/smartcardio/CardImpl;
0 4 1 action Ljava/lang/String;
1 4 2 sm Ljava/lang/SecurityManager;
MethodParameters:
Name Flags
action
void handleError(sun.security.smartcardio.PCSCException);
descriptor: (Lsun/security/smartcardio/PCSCException;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getfield sun.security.smartcardio.PCSCException.code:I
ldc -2146434967
if_icmpne 2
1: aload 0
getstatic sun.security.smartcardio.CardImpl$State.REMOVED:Lsun/security/smartcardio/CardImpl$State;
putfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/smartcardio/CardImpl;
0 3 1 e Lsun/security/smartcardio/PCSCException;
MethodParameters:
Name Flags
e
public javax.smartcardio.ATR getATR();
descriptor: ()Ljavax/smartcardio/ATR;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.CardImpl.atr:Ljavax/smartcardio/ATR;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/smartcardio/CardImpl;
public java.lang.String getProtocol();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.CardImpl.protocol:I
tableswitch { // 1 - 2
1: 1
2: 2
default: 3
}
1: StackMap locals:
StackMap stack:
ldc "T=0"
areturn
2: StackMap locals:
StackMap stack:
ldc "T=1"
areturn
3: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Unknown protocol "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.smartcardio.CardImpl.protocol:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/smartcardio/CardImpl;
public javax.smartcardio.CardChannel getBasicChannel();
descriptor: ()Ljavax/smartcardio/CardChannel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "getBasicChannel"
invokevirtual sun.security.smartcardio.CardImpl.checkSecurity:(Ljava/lang/String;)V
1: aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkState:()V
2: aload 0
getfield sun.security.smartcardio.CardImpl.basicChannel:Lsun/security/smartcardio/ChannelImpl;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/smartcardio/CardImpl;
private static int getSW(byte[]);
descriptor: ([B)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
arraylength
iconst_2
if_icmpge 2
1: iconst_m1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
aload 0
arraylength
iconst_2
isub
baload
sipush 255
iand
istore 1
start local 1 3: aload 0
aload 0
arraylength
iconst_1
isub
baload
sipush 255
iand
istore 2
start local 2 4: iload 1
bipush 8
ishl
iload 2
ior
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 b [B
3 5 1 sw1 I
4 5 2 sw2 I
MethodParameters:
Name Flags
b
public javax.smartcardio.CardChannel openLogicalChannel();
descriptor: ()Ljavax/smartcardio/CardChannel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=1
start local 0 0: aload 0
ldc "openLogicalChannel"
invokevirtual sun.security.smartcardio.CardImpl.checkSecurity:(Ljava/lang/String;)V
1: aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkState:()V
2: aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkExclusive:()V
3: aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
aload 0
getfield sun.security.smartcardio.CardImpl.protocol:I
getstatic sun.security.smartcardio.CardImpl.commandOpenChannel:[B
iconst_0
getstatic sun.security.smartcardio.CardImpl.commandOpenChannel:[B
arraylength
4: invokestatic sun.security.smartcardio.PCSC.SCardTransmit:(JI[BII)[B
astore 1
start local 1 5: aload 1
arraylength
iconst_3
if_icmpne 6
aload 1
invokestatic sun.security.smartcardio.CardImpl.getSW:([B)I
ldc 36864
if_icmpeq 11
6: StackMap locals: byte[]
StackMap stack:
new javax.smartcardio.CardException
dup
7: new java.lang.StringBuilder
dup
ldc "openLogicalChannel() failed, card response: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
8: aload 1
invokestatic sun.security.smartcardio.PCSC.toString:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
new sun.security.smartcardio.ChannelImpl
dup
aload 0
aload 1
iconst_0
baload
invokespecial sun.security.smartcardio.ChannelImpl.<init>:(Lsun/security/smartcardio/CardImpl;I)V
12: areturn
end local 1 13: StackMap locals: sun.security.smartcardio.CardImpl
StackMap stack: sun.security.smartcardio.PCSCException
astore 1
start local 1 14: aload 0
aload 1
invokevirtual sun.security.smartcardio.CardImpl.handleError:(Lsun/security/smartcardio/PCSCException;)V
15: new javax.smartcardio.CardException
dup
ldc "openLogicalChannel() failed"
aload 1
invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/security/smartcardio/CardImpl;
5 13 1 response [B
14 16 1 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
3 12 13 Class sun.security.smartcardio.PCSCException
Exceptions:
throws javax.smartcardio.CardException
void checkExclusive();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: return
3: StackMap locals: java.lang.Thread
StackMap stack:
aload 1
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
if_acmpeq 5
4: new javax.smartcardio.CardException
dup
ldc "Exclusive access established by another Thread"
invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/smartcardio/CardImpl;
1 6 1 t Ljava/lang/Thread;
Exceptions:
throws javax.smartcardio.CardException
public synchronized void beginExclusive();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=5, locals=2, args_size=1
start local 0 0: aload 0
ldc "exclusive"
invokevirtual sun.security.smartcardio.CardImpl.checkSecurity:(Ljava/lang/String;)V
1: aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkState:()V
2: aload 0
getfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
ifnull 8
3: new javax.smartcardio.CardException
dup
4: new java.lang.StringBuilder
dup
ldc "Exclusive access has already been assigned to Thread "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
5: aload 0
getfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
6: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
7: invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
invokestatic sun.security.smartcardio.PCSC.SCardBeginTransaction:(J)V
9: goto 13
StackMap locals:
StackMap stack: sun.security.smartcardio.PCSCException
10: astore 1
start local 1 11: aload 0
aload 1
invokevirtual sun.security.smartcardio.CardImpl.handleError:(Lsun/security/smartcardio/PCSCException;)V
12: new javax.smartcardio.CardException
dup
ldc "beginExclusive() failed"
aload 1
invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 1 13: StackMap locals:
StackMap stack:
aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
14: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/smartcardio/CardImpl;
11 13 1 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
8 9 10 Class sun.security.smartcardio.PCSCException
Exceptions:
throws javax.smartcardio.CardException
public synchronized void endExclusive();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkState:()V
1: aload 0
getfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
if_acmpeq 5
2: new java.lang.IllegalStateException
dup
3: ldc "Exclusive access not assigned to current Thread"
4: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
iconst_0
invokestatic sun.security.smartcardio.PCSC.SCardEndTransaction:(JI)V
6: goto 13
StackMap locals:
StackMap stack: sun.security.smartcardio.PCSCException
7: astore 1
start local 1 8: aload 0
aload 1
invokevirtual sun.security.smartcardio.CardImpl.handleError:(Lsun/security/smartcardio/PCSCException;)V
9: new javax.smartcardio.CardException
dup
ldc "endExclusive() failed"
aload 1
invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 1 10: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
11: aload 0
aconst_null
putfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
12: aload 2
athrow
13: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
14: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/smartcardio/CardImpl;
8 10 1 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
5 6 7 Class sun.security.smartcardio.PCSCException
5 10 10 any
Exceptions:
throws javax.smartcardio.CardException
public byte[] transmitControlCommand(int, byte[]);
descriptor: (I[B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
ldc "transmitControl"
invokevirtual sun.security.smartcardio.CardImpl.checkSecurity:(Ljava/lang/String;)V
1: aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkState:()V
2: aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkExclusive:()V
3: aload 2
ifnonnull 5
4: new java.lang.NullPointerException
dup
invokespecial java.lang.NullPointerException.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
iload 1
aload 2
invokestatic sun.security.smartcardio.PCSC.SCardControl:(JI[B)[B
astore 3
start local 3 6: aload 3
7: areturn
end local 3 8: StackMap locals:
StackMap stack: sun.security.smartcardio.PCSCException
astore 3
start local 3 9: aload 0
aload 3
invokevirtual sun.security.smartcardio.CardImpl.handleError:(Lsun/security/smartcardio/PCSCException;)V
10: new javax.smartcardio.CardException
dup
ldc "transmitControlCommand() failed"
aload 3
invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/smartcardio/CardImpl;
0 11 1 controlCode I
0 11 2 command [B
6 8 3 r [B
9 11 3 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
5 7 8 Class sun.security.smartcardio.PCSCException
Exceptions:
throws javax.smartcardio.CardException
MethodParameters:
Name Flags
controlCode
command
public void disconnect(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: iload 1
ifeq 2
1: aload 0
ldc "reset"
invokevirtual sun.security.smartcardio.CardImpl.checkSecurity:(Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
getstatic sun.security.smartcardio.CardImpl$State.OK:Lsun/security/smartcardio/CardImpl$State;
if_acmpeq 4
3: return
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.security.smartcardio.CardImpl.checkExclusive:()V
5: getstatic sun.security.smartcardio.CardImpl.invertReset:Z
ifeq 9
6: iload 1
ifeq 7
iconst_0
goto 8
StackMap locals:
StackMap stack:
7: iconst_1
StackMap locals:
StackMap stack: int
8: istore 1
9: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
iload 1
ifeq 10
iconst_1
goto 11
StackMap locals:
StackMap stack: long
10: iconst_0
StackMap locals: sun.security.smartcardio.CardImpl int
StackMap stack: long int
11: invokestatic sun.security.smartcardio.PCSC.SCardDisconnect:(JI)V
12: goto 19
StackMap locals:
StackMap stack: sun.security.smartcardio.PCSCException
13: astore 2
start local 2 14: new javax.smartcardio.CardException
dup
ldc "disconnect() failed"
aload 2
invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 15: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
16: aload 0
getstatic sun.security.smartcardio.CardImpl$State.DISCONNECTED:Lsun/security/smartcardio/CardImpl$State;
putfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
17: aload 0
aconst_null
putfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
18: aload 3
athrow
19: StackMap locals:
StackMap stack:
aload 0
getstatic sun.security.smartcardio.CardImpl$State.DISCONNECTED:Lsun/security/smartcardio/CardImpl$State;
putfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
20: aload 0
aconst_null
putfield sun.security.smartcardio.CardImpl.exclusiveThread:Ljava/lang/Thread;
21: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lsun/security/smartcardio/CardImpl;
0 22 1 reset Z
14 15 2 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
9 12 13 Class sun.security.smartcardio.PCSCException
9 15 15 any
Exceptions:
throws javax.smartcardio.CardException
MethodParameters:
Name Flags
reset
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
ldc "PC/SC card in "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.smartcardio.CardImpl.terminal:Lsun/security/smartcardio/TerminalImpl;
getfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
1: ldc ", protocol "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual sun.security.smartcardio.CardImpl.getProtocol:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ", state "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
2: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/smartcardio/CardImpl;
protected void finalize();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
getstatic sun.security.smartcardio.CardImpl$State.OK:Lsun/security/smartcardio/CardImpl$State;
if_acmpne 7
1: aload 0
getstatic sun.security.smartcardio.CardImpl$State.DISCONNECTED:Lsun/security/smartcardio/CardImpl$State;
putfield sun.security.smartcardio.CardImpl.state:Lsun/security/smartcardio/CardImpl$State;
2: aload 0
getfield sun.security.smartcardio.CardImpl.cardId:J
iconst_0
invokestatic sun.security.smartcardio.PCSC.SCardDisconnect:(JI)V
3: goto 7
StackMap locals:
StackMap stack: java.lang.Throwable
4: astore 1
5: aload 0
invokespecial java.lang.Object.finalize:()V
6: aload 1
athrow
7: StackMap locals:
StackMap stack:
aload 0
invokespecial java.lang.Object.finalize:()V
8: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/smartcardio/CardImpl;
Exception table:
from to target type
0 4 4 any
Exceptions:
throws java.lang.Throwable
private static java.lang.String lambda$0();
descriptor: ()Ljava/lang/String;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=0, args_size=0
0: ldc "os.name"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "CardImpl.java"
NestMembers:
sun.security.smartcardio.CardImpl$State
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
private final State = sun.security.smartcardio.CardImpl$State of sun.security.smartcardio.CardImpl