⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 impl.jca

📁 在开发java卡的时候
💻 JCA
📖 第 1 页 / 共 3 页
字号:
					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 + -