gpt4 book ai didi

javacard - 为什么我需要删除小程序的包才能删除我的小程序?

转载 作者:行者123 更新时间:2023-12-04 01:09:37 30 4
gpt4 key购买 nike

我有一个空的 Javacard,如下所示:

user@system$ java -jar gp.jar --list
ISD: A000000003000000 (OP_READY)
Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement
我在上面安装了一个奇怪的小程序:
user@system$ java -jar gp.jar --install applet.cap
CAP loaded
user@system$
好了,小程序安装成功:
user@system$ java -jar gp.jar --list
ISD: A000000003000000 (OP_READY)
Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement

APP: 01020304050601(SELECTABLE)

PKG: 010203040506(LOADED)

user@system$
但是当我尝试删除小程序时,我失败了:
user@system$ java -jar gp.jar --delete 01020304050601 --debug --verbose

# Successful Mutual Authentication with Security Level = 01 (CMAC)

A>> 84F28002 0A 4F00<CMAC> 00
A<< E3114F08A0000000030000009F700101C5019E 9000

A>> 84F24002 0A 4F00<CMAC> 00
A<< E3104F07010203040506019F700107C50100 9000

A>> 84F21002 0A 4F00<CMAC> 00
A<< E30F4F060102030405069F700101C50100 9000

A>> 84F22002 0A 4F00<CMAC> 00
A<< E30C4F060102030405069F700101 9000

A>> 84E40000 11 4F0701020304050601<CMAC>
A<< 6985

Could not delete D3646467329901. Some app still active?
我也尝试过以下形式的删除命令:
user@system$ java -jar gp.jar --delete 01020304050601 --force  ==> Same result
user@system$ java -jar gp.jar --delete 010203040506 ==> Same result
我可以用来删除小程序的唯一成功的形式如下:
user@system$ java -jar gp.jar --delete 010203040506 --force

# Successful Mutual Authentication with Security Level = 01 (CMAC)

A>> 84F28002 0A 4F00<CMAC> 00
A<< E3114F08A0000000030000009F700101C5019E 9000

A>> 84F24002 0A 4F00<CMAC> 00
A<< E3104F07010203040506019F700107C50100 9000

A>> 84F21002 0A 4F00<CMAC> 00
A<< E30F4F060102030405069F700101C50100 9000

A>> 84F22002 0A 4F00<CMAC> 00
A<< E30C4F060102030405069F700101 9000

A>> 84E40080 10 4F06010203040506<CMAC>
A<< 9000
小程序及其包现在消失了:
user@system$ java -jar gp.jar --list
ISD: A000000003000000 (OP_READY)
Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement
问题:为什么我需要删除包才能删除小程序本身?
请注意,这种情况仅出现在特定的 cap 文件中。
仅供引用:我尝试了不同的工具(包括 gpshell、pyapdu 等)并且得到了相同的结果。

最佳答案

小程序的卸载过程没有成功运行,因此无法单独删除小程序实例,很可能您在小程序代码中声明了私有(private)静态 transient 字节数组等静态内容。在这种情况下,您必须通过覆盖 Applet 的 uninstall 将任何静态对象取消初始化为空。方法。检查 JCRE 中的对象所有权以了解问题

关于javacard - 为什么我需要删除小程序的包才能删除我的小程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65289685/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com