如何在javacard上更改applet的生命周期?

时间:2014-05-28 10:26:17

标签: smartcard 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,其包的生命周期为7.并且对于包和applet特权都是0x00。我怎么能改变它们?(PR和LC)

3 个答案:

答案 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

根据这一点,它毕竟不是你可以改变的东西,是吗?