[英]How to change an applet's life cycle on javacard?
我已经在智能卡上上传了一个HelloWorld.cap小程序,当我使用gpj -list
命令时,该卡返回以下输出:
D:\gpj>java -jar gpj.jar -list
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
Found card in terminal: ACS CCID USB Reader 0
ATR: 3B 68 00 00 00 73 C8 40 12 00 90 00
.
.
.
AID: A0 00 00 00 03 00 00 00 |........| ISD LC: 1 P
R: 0x9E
AID: 11 22 33 44 55 66 |."3DUf| App LC: 7 P
R: 0x00
AID: 11 22 33 44 55 |."3DU| Exe LC: 1 P
R: 0x00
如您所见,我的applet的生命周期为7,其package的生命周期为7。package和applet的特权均为0x00。 如何更改它们?(PR和LC)
Applet特权和生命周期状态在GlobalPlatform卡规范中进行了描述,您可以从http://www.globalplatform.org/specificationscard.asp下载。这是一个很长的文档,并不是特别容易阅读,但是我确实建议您仔细阅读如果您打算使用智能卡。
它说明了如何为applet分配特权(主要是在安装时)以及如何在不同的生命周期状态之间过渡。 例如,它说您的Hello World小程序已经处于SELECTABLE状态,因此它只能转换为LOCKED或被删除。
为了更改LC (生命周期),请使用设置状态 APDU:
例如 :
OP_READY要初始化 : 80 F0 P1 07 |Lc| AID
80 F0 P1 07 |Lc| AID
初始化为安全 : 80 F0 P1 0F |Lc| AID
80 F0 P1 0F |Lc| AID
P1 = 40
:适用于应用程序(包括SSD)
P1 = 80
:对于ISD
并且为了更改PR (特权),您应该在gpj
install命令中添加-priv
参数。
例如: gpj -load helloWorld.cap - install -priv 0x04
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.