📄 impl.jca
字号:
invokestatic 5; // watchdata/impl/PrivAccess.registerApplet(Ljavacard/framework/Applet;Ljavacard/framework/AID;)V
return;
}
.method public final register(Ljavacard/framework/Applet;[BSB)V 2 {
.stack 5;
.locals 1;
.descriptor Ljavacard/framework/Applet; 1.3;
L0: new 6; // javacard/framework/AID
dup;
aload_2;
sload_3;
sload 4;
invokespecial 7; // javacard/framework/AID.<init>([BSB)V
astore 5;
aload 5;
sconst_0;
invokestatic 8; // watchdata/NativeMethods/WDAPI.setJCREentry(Ljava/lang/Object;Z)V
aload_1;
aload 5;
invokestatic 5; // watchdata/impl/PrivAccess.registerApplet(Ljavacard/framework/Applet;Ljavacard/framework/AID;)V
return;
}
.method public <init>()V 0 {
.stack 1;
.locals 0;
L0: aload_0;
invokespecial 2; // java/lang/Object.<init>()V
aload_0;
putstatic_a 9; // reference watchdata/impl/PrivAccess.thePrivAccess
return;
}
.method public static getPackedBoolean()Lwatchdata/impl/PackedBoolean; 1 {
.stack 3;
.locals 0;
L0: getstatic_a 10; // reference watchdata/impl/PrivAccess.thePackedBoolean
ifnonnull L2;
L1: new 11; // watchdata/impl/PackedBoolean
dup;
sconst_2;
invokespecial 12; // watchdata/impl/PackedBoolean.<init>(B)V
putstatic_a 10; // reference watchdata/impl/PrivAccess.thePackedBoolean
L2: getstatic_a 10; // reference watchdata/impl/PrivAccess.thePackedBoolean
areturn;
}
.method public static getPrivAccess()Lwatchdata/impl/PrivAccess; 2 {
.stack 1;
.locals 0;
L0: getstatic_a 9; // reference watchdata/impl/PrivAccess.thePrivAccess
areturn;
}
.method public static setSelectingAppletFlag()V 3 {
.stack 2;
.locals 0;
L0: getstatic_a 10; // reference watchdata/impl/PrivAccess.thePackedBoolean
getstatic_b 13; // byte watchdata/impl/PrivAccess.selectingAppletFlag
invokevirtual 14; // watchdata/impl/PackedBoolean.set(B)V
return;
}
.method public static resetSelectingAppletFlag()V 4 {
.stack 2;
.locals 0;
L0: getstatic_a 10; // reference watchdata/impl/PrivAccess.thePackedBoolean
getstatic_b 13; // byte watchdata/impl/PrivAccess.selectingAppletFlag
invokevirtual 15; // watchdata/impl/PackedBoolean.reset(B)V
return;
}
.method public static setProcessMethodFlag()V 5 {
.stack 2;
.locals 0;
L0: getstatic_a 10; // reference watchdata/impl/PrivAccess.thePackedBoolean
getstatic_b 16; // byte watchdata/impl/PrivAccess.processMethodFlag
invokevirtual 14; // watchdata/impl/PackedBoolean.set(B)V
return;
}
.method public static resetProcessMethodFlag()V 6 {
.stack 2;
.locals 0;
L0: getstatic_a 10; // reference watchdata/impl/PrivAccess.thePackedBoolean
getstatic_b 16; // byte watchdata/impl/PrivAccess.processMethodFlag
invokevirtual 15; // watchdata/impl/PackedBoolean.reset(B)V
return;
}
.method public static getSelectedAppID(B)B 7 {
.stack 2;
.locals 3;
L0: sload_0;
invokestatic 17; // watchdata/NativeMethods/WDAPI.getChannelContext(B)S
sstore_1;
sload_1;
sconst_m1;
if_scmpne L2;
L1: sconst_m1;
sreturn;
L2: sconst_0;
sstore_2;
goto L7;
L3: sload_2;
sconst_0;
invokestatic 18; // watchdata/NativeMethods/WDAPI.readAppTable(BB)S
sstore_3;
sload_3;
sconst_m1;
if_scmpeq L6;
L4: sload_3;
sload_1;
if_scmpne L6;
L5: sload_2;
sreturn;
L6: sload_2;
sconst_1;
sadd;
s2b;
sstore_2;
L7: sload_2;
bspush 16;
if_scmplt L3;
L8: sconst_m1;
sreturn;
}
.method public static getSelectedApplet(B)Ljavacard/framework/Applet; 8 {
.stack 1;
.locals 1;
.descriptor Ljavacard/framework/Applet; 1.3;
L0: sload_0;
invokestatic 17; // watchdata/NativeMethods/WDAPI.getChannelContext(B)S
sstore_1;
sload_1;
invokestatic 19; // watchdata/NativeMethods/WDAPI.getAppletInstance(S)Ljavacard/framework/Applet;
areturn;
}
.method public static selectDefaultApplet(BB)V 9 {
.stack 2;
.locals 0;
L0: sload_1;
invokestatic 20; // watchdata/impl/PrivAccess.deselectOnly(B)V
sload_1;
ifne L2;
L1: sload_1;
getstatic_b 21; // byte watchdata/impl/PrivAccess.defaultAppID
invokestatic 22; // watchdata/impl/PrivAccess.selectOnly(BB)V
L2: return;
}
.method public static isMultiSelectionOK(BB)Z 10 {
.stack 2;
.locals 5;
L0: sload_1;
invokestatic 23; // watchdata/NativeMethods/WDAPI.getAppletInstance(B)Ljavacard/framework/Applet;
astore_2;
aload_2;
instanceof 0 24; // T_CLASSORINTERFACE javacard/framework/MultiSelectable
ifeq L2;
L1: sconst_1;
sreturn;
L2: sload_1;
invokestatic 25; // watchdata/impl/PrivAccess.getContextId(B)S
sstore_3;
invokestatic 26; // watchdata/NativeMethods/WDAPI.getMaxChannels()B
sstore 4;
sconst_m1;
sstore 5;
sconst_0;
sstore 6;
goto L8;
L3: sload 6;
sload_0;
if_scmpeq L7;
L4: sload 6;
invokestatic 17; // watchdata/NativeMethods/WDAPI.getChannelContext(B)S
sstore 5;
sload 5;
sconst_m1;
if_scmpeq L7;
L5: sload 5;
sload_3;
if_scmpne L7;
L6: sconst_0;
sreturn;
L7: sload 6;
sconst_1;
sadd;
s2b;
sstore 6;
L8: sload 6;
sload 4;
if_scmplt L3;
L9: sconst_1;
sreturn;
}
.method public static selectOnly(BB)V 11 {
.stack 3;
.locals 6;
L0: sconst_0;
sstore_2;
sload_1;
invokestatic 25; // watchdata/impl/PrivAccess.getContextId(B)S
sstore_3;
sconst_0;
sstore 4;
invokestatic 29; // watchdata/impl/PrivAccess.setSelectingAppletFlag()V
L1: sload_1;
invokestatic 23; // watchdata/NativeMethods/WDAPI.getAppletInstance(B)Ljavacard/framework/Applet;
astore 5;
sload_3;
invokestatic 30; // watchdata/NativeMethods/WDAPI.getContextStatus(S)B
sstore 4;
sload_0;
sload_3;
aload 5;
instanceof 0 24; // T_CLASSORINTERFACE javacard/framework/MultiSelectable
invokestatic 31; // watchdata/NativeMethods/WDAPI.setChannelContext(BSZ)Z
ifeq L8;
L2: sload_0;
invokestatic 32; // watchdata/NativeMethods/WDAPI.setCurrentlySelectedChannel(B)V
sload 4;
sconst_1;
sand;
ifeq L7;
L3: sload_0;
invokestatic 33; // watchdata/impl/PrivAccess.getSelectedApplet(B)Ljavacard/framework/Applet;
checkcast 0 24; // T_CLASSORINTERFACE javacard/framework/MultiSelectable
astore 6;
aload 6;
sload 4;
sconst_4;
sand;
ifeq L5;
L4: sconst_1;
goto L6;
L5: sconst_0;
L6: invokeinterface 2 24 0; // javacard/framework/MultiSelectable
sstore_2;
goto L12;
L7: sload_0;
invokestatic 33; // watchdata/impl/PrivAccess.getSelectedApplet(B)Ljavacard/framework/Applet;
invokevirtual 34; // javacard/framework/Applet.select()Z
sstore_2;
goto L12;
L8: sspush 27013;
invokestatic 35; // javacard/framework/ISOException.throwIt(S)V
goto L12;
L9: astore 5;
aload 5;
invokevirtual 36; // javacard/framework/ISOException.getReason()S
sspush 27013;
if_scmpne L12;
L10: aload 5;
invokevirtual 36; // javacard/framework/ISOException.getReason()S
invokestatic 35; // javacard/framework/ISOException.throwIt(S)V
goto L12;
L11: astore 7;
L12: invokestatic 37; // javacard/framework/APDU.getCLAChannel()B
invokestatic 32; // watchdata/NativeMethods/WDAPI.setCurrentlySelectedChannel(B)V
invokestatic 38; // javacard/framework/JCSystem.getTransactionDepth()B
ifeq L14;
L13: sconst_0;
sstore_2;
invokestatic 39; // javacard/framework/JCSystem.abortTransaction()V
L14: sload_2;
ifeq L16;
L15: return;
L16: sload_0;
sconst_m1;
sconst_0;
invokestatic 31; // watchdata/NativeMethods/WDAPI.setChannelContext(BSZ)Z
pop;
sspush 27033;
invokestatic 35; // javacard/framework/ISOException.throwIt(S)V
return;
.exceptionTable {
// start_block end_block handler_block catch_type_index
L1 L9 L9 27;
L1 L9 L11 28;
}
}
.method public static deselectOnly(B)V 12 {
.stack 3;
.locals 5;
L0: sload_0;
invokestatic 17; // watchdata/NativeMethods/WDAPI.getChannelContext(B)S
sconst_m1;
if_scmpne L2;
L1: return;
L2: sload_0;
invokestatic 33; // watchdata/impl/PrivAccess.getSelectedApplet(B)Ljavacard/framework/Applet;
astore_1;
aload_1;
ifnonnull L4;
L3: return;
L4: sload_0;
invokestatic 17; // watchdata/NativeMethods/WDAPI.getChannelContext(B)S
sstore_2;
sload_2;
invokestatic 30; // watchdata/NativeMethods/WDAPI.getContextStatus(S)B
sstore_3;
L5: sload_0;
invokestatic 32; // watchdata/NativeMethods/WDAPI.setCurrentlySelectedChannel(B)V
sload_3;
sconst_2;
sand;
ifeq L10;
L6: sload_0;
invokestatic 33; // watchdata/impl/PrivAccess.getSelectedApplet(B)Ljavacard/framework/Applet;
checkcast 0 24; // T_CLASSORINTERFACE javacard/framework/MultiSelectable
astore 4;
aload 4;
sload_3;
bspush 8;
sand;
ifeq L8;
L7: sconst_1;
goto L9;
L8: sconst_0;
L9: invokeinterface 2 24 1; // javacard/framework/MultiSelectable
goto L12;
L10: aload_1;
invokevirtual 40; // javacard/framework/Applet.deselect()V
goto L12;
L11: astore 5;
L12: invokestatic 37; // javacard/framework/APDU.getCLAChannel()B
invokestatic 32; // watchdata/NativeMethods/WDAPI.setCurrentlySelectedChannel(B)V
sload_3;
sconst_2;
sand;
ifne L14;
L13: sload_0;
sconst_2;
invokestatic 41; // watchdata/NativeMethods/WDAPI.clearTransientObjs(BB)V
L14: sload_0;
sconst_m1;
sconst_0;
invokestatic 31; // watchdata/NativeMethods/WDAPI.setChannelContext(BSZ)Z
pop;
invokestatic 38; // javacard/framework/JCSystem.getTransactionDepth()B
ifeq L16;
L15: invokestatic 39; // javacard/framework/JCSystem.abortTransaction()V
L16: return;
.exceptionTable {
// start_block end_block handler_block catch_type_index
L5 L11 L11 28;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -