final class sun.security.smartcardio.TerminalImpl extends javax.smartcardio.CardTerminal
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.smartcardio.TerminalImpl
super_class: javax.smartcardio.CardTerminal
{
final long contextId;
descriptor: J
flags: (0x0010) ACC_FINAL
final java.lang.String name;
descriptor: Ljava/lang/String;
flags: (0x0010) ACC_FINAL
private sun.security.smartcardio.CardImpl card;
descriptor: Lsun/security/smartcardio/CardImpl;
flags: (0x0002) ACC_PRIVATE
void <init>(long, java.lang.String);
descriptor: (JLjava/lang/String;)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 3 0: aload 0
invokespecial javax.smartcardio.CardTerminal.<init>:()V
1: aload 0
lload 1
putfield sun.security.smartcardio.TerminalImpl.contextId:J
2: aload 0
aload 3
putfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
3: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/smartcardio/TerminalImpl;
0 4 1 contextId J
0 4 3 name Ljava/lang/String;
MethodParameters:
Name Flags
contextId
name
public java.lang.String getName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/smartcardio/TerminalImpl;
public synchronized javax.smartcardio.Card connect(java.lang.String);
descriptor: (Ljava/lang/String;)Ljavax/smartcardio/Card;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=5, locals=4, 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.TerminalImpl.name:Ljava/lang/String;
ldc "connect"
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:
aload 0
getfield sun.security.smartcardio.TerminalImpl.card:Lsun/security/smartcardio/CardImpl;
ifnull 12
4: aload 0
getfield sun.security.smartcardio.TerminalImpl.card:Lsun/security/smartcardio/CardImpl;
invokevirtual sun.security.smartcardio.CardImpl.isValid:()Z
ifeq 11
5: aload 0
getfield sun.security.smartcardio.TerminalImpl.card:Lsun/security/smartcardio/CardImpl;
invokevirtual sun.security.smartcardio.CardImpl.getProtocol:()Ljava/lang/String;
astore 3
start local 3 6: aload 1
ldc "*"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 7
aload 1
aload 3
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 8
7: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield sun.security.smartcardio.TerminalImpl.card:Lsun/security/smartcardio/CardImpl;
areturn
8: StackMap locals:
StackMap stack:
new javax.smartcardio.CardException
dup
new java.lang.StringBuilder
dup
ldc "Cannot connect using "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: ldc ", connection already established using "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;)V
athrow
end local 3 11: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield sun.security.smartcardio.TerminalImpl.card:Lsun/security/smartcardio/CardImpl;
12: StackMap locals:
StackMap stack:
aload 0
new sun.security.smartcardio.CardImpl
dup
aload 0
aload 1
invokespecial sun.security.smartcardio.CardImpl.<init>:(Lsun/security/smartcardio/TerminalImpl;Ljava/lang/String;)V
putfield sun.security.smartcardio.TerminalImpl.card:Lsun/security/smartcardio/CardImpl;
13: aload 0
getfield sun.security.smartcardio.TerminalImpl.card:Lsun/security/smartcardio/CardImpl;
14: areturn
15: StackMap locals:
StackMap stack: sun.security.smartcardio.PCSCException
astore 3
start local 3 16: aload 3
getfield sun.security.smartcardio.PCSCException.code:I
ldc -2146434967
if_icmpeq 17
aload 3
getfield sun.security.smartcardio.PCSCException.code:I
ldc -2146435060
if_icmpne 18
17: StackMap locals: sun.security.smartcardio.PCSCException
StackMap stack:
new javax.smartcardio.CardNotPresentException
dup
ldc "No card present"
aload 3
invokespecial javax.smartcardio.CardNotPresentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
18: StackMap locals:
StackMap stack:
new javax.smartcardio.CardException
dup
ldc "connect() 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 19 0 this Lsun/security/smartcardio/TerminalImpl;
0 19 1 protocol Ljava/lang/String;
1 19 2 sm Ljava/lang/SecurityManager;
6 11 3 cardProto Ljava/lang/String;
16 19 3 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
12 14 15 Class sun.security.smartcardio.PCSCException
Exceptions:
throws javax.smartcardio.CardException
MethodParameters:
Name Flags
protocol
public boolean isCardPresent();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.smartcardio.TerminalImpl.contextId:J
lconst_0
1: iconst_1
newarray 10
iconst_1
anewarray java.lang.String
dup
iconst_0
aload 0
getfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
aastore
2: invokestatic sun.security.smartcardio.PCSC.SCardGetStatusChange:(JJ[I[Ljava/lang/String;)[I
astore 1
start local 1 3: aload 1
iconst_0
iaload
bipush 32
iand
ifeq 4
iconst_1
ireturn
StackMap locals: int[]
StackMap stack:
4: iconst_0
5: ireturn
end local 1 6: StackMap locals: sun.security.smartcardio.TerminalImpl
StackMap stack: sun.security.smartcardio.PCSCException
astore 1
start local 1 7: new javax.smartcardio.CardException
dup
ldc "isCardPresent() 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 8 0 this Lsun/security/smartcardio/TerminalImpl;
3 6 1 status [I
7 8 1 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
0 5 6 Class sun.security.smartcardio.PCSCException
Exceptions:
throws javax.smartcardio.CardException
private boolean waitForCard(boolean, long);
descriptor: (ZJ)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: lload 2
lconst_0
lcmp
ifge 2
1: new java.lang.IllegalArgumentException
dup
ldc "timeout must not be negative"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
lload 2
lconst_0
lcmp
ifne 4
3: ldc -1
lstore 2
4: StackMap locals:
StackMap stack:
iconst_1
newarray 10
astore 4
start local 4 5: iconst_1
anewarray java.lang.String
dup
iconst_0
aload 0
getfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
aastore
astore 5
start local 5 6: aload 0
getfield sun.security.smartcardio.TerminalImpl.contextId:J
lconst_0
aload 4
aload 5
invokestatic sun.security.smartcardio.PCSC.SCardGetStatusChange:(JJ[I[Ljava/lang/String;)[I
astore 4
7: aload 4
iconst_0
iaload
bipush 32
iand
ifeq 8
iconst_1
goto 9
StackMap locals: int[] java.lang.String[]
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: istore 6
start local 6 10: iload 1
iload 6
if_icmpne 12
11: iconst_1
ireturn
12: StackMap locals: int
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
lload 2
ladd
lstore 7
start local 7 13: goto 20
14: StackMap locals: long
StackMap stack:
lload 2
ldc -1
lcmp
ifeq 16
15: lload 7
invokestatic java.lang.System.currentTimeMillis:()J
lsub
lconst_0
invokestatic java.lang.Math.max:(JJ)J
lstore 2
16: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.smartcardio.TerminalImpl.contextId:J
lload 2
aload 4
aload 5
invokestatic sun.security.smartcardio.PCSC.SCardGetStatusChange:(JJ[I[Ljava/lang/String;)[I
astore 4
17: aload 4
iconst_0
iaload
bipush 32
iand
ifeq 18
iconst_1
goto 19
StackMap locals:
StackMap stack:
18: iconst_0
StackMap locals:
StackMap stack: int
19: istore 6
20: StackMap locals:
StackMap stack:
iload 1
iload 6
if_icmpeq 21
lload 2
lconst_0
lcmp
ifne 14
21: StackMap locals:
StackMap stack:
iload 1
iload 6
if_icmpne 22
iconst_1
ireturn
StackMap locals:
StackMap stack:
22: iconst_0
23: ireturn
end local 7 end local 6 24: StackMap locals: sun.security.smartcardio.TerminalImpl int long int[] java.lang.String[]
StackMap stack: sun.security.smartcardio.PCSCException
astore 6
start local 6 25: aload 6
getfield sun.security.smartcardio.PCSCException.code:I
ldc -2146435062
if_icmpne 27
26: iconst_0
ireturn
27: StackMap locals: sun.security.smartcardio.PCSCException
StackMap stack:
new javax.smartcardio.CardException
dup
ldc "waitForCard() failed"
aload 6
invokespecial javax.smartcardio.CardException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lsun/security/smartcardio/TerminalImpl;
0 28 1 wantPresent Z
0 28 2 timeout J
5 28 4 status [I
6 28 5 readers [Ljava/lang/String;
10 24 6 present Z
13 24 7 end J
25 28 6 e Lsun/security/smartcardio/PCSCException;
Exception table:
from to target type
6 11 24 Class sun.security.smartcardio.PCSCException
12 23 24 Class sun.security.smartcardio.PCSCException
Exceptions:
throws javax.smartcardio.CardException
MethodParameters:
Name Flags
wantPresent
timeout
public boolean waitForCardPresent(long);
descriptor: (J)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
iconst_1
lload 1
invokevirtual sun.security.smartcardio.TerminalImpl.waitForCard:(ZJ)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/smartcardio/TerminalImpl;
0 1 1 timeout J
Exceptions:
throws javax.smartcardio.CardException
MethodParameters:
Name Flags
timeout
public boolean waitForCardAbsent(long);
descriptor: (J)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
iconst_0
lload 1
invokevirtual sun.security.smartcardio.TerminalImpl.waitForCard:(ZJ)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/smartcardio/TerminalImpl;
0 1 1 timeout J
Exceptions:
throws javax.smartcardio.CardException
MethodParameters:
Name Flags
timeout
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 terminal "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.smartcardio.TerminalImpl.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/smartcardio/TerminalImpl;
}
SourceFile: "TerminalImpl.java"