我已经在智能卡上上传了一个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,其包的生命周期为7.并且对于包和applet特权都是0x00。我怎么能改变它们?(PR和LC)
答案 0 :(得分:3)
全局平台卡规范中描述了小程序权限和生命周期状态,您可以从http://www.globalplatform.org/specificationscard.asp下载它 这是一篇很长的文档,并不是特别容易阅读,但如果您打算使用智能卡,我真的建议您仔细阅读。
它解释了如何为applet分配权限(主要是在安装时)以及如何在不同的生命周期状态中进行转换。例如,它表示您的Hello World小程序已处于SELECTABLE状态,因此它只能转换为LOCKED或被删除。
答案 1 :(得分:1)
要更改 LC (生命周期),请使用设置状态 APDU:
例如:
OP_READY INITIALIZED :80 F0 P1 07 |Lc| AID
INITIALIZED 已保护:80 F0 P1 0F |Lc| AID
P1 = 40
:适用于应用程序(包括SSD)
P1 = 80
:对于ISD
要更改 PR (权限),您应该将-priv
参数添加到gpj
安装命令。
例如:gpj -load helloWorld.cap - install -priv 0x04
答案 2 :(得分:0)
http://www.oracle.com/technetwork/java/javacard/javacard1-139251.html#_Lifecycle_of_a
根据这一点,它毕竟不是你可以改变的东西,是吗?