将applet安装到Java卡的APDU命令序列是什么?

时间:2017-09-19 09:30:05

标签: java smartcard javacard globalplatform

我有一个.CAP文件(小程序),我想将它安装到我的Java卡上。 我知道我可以使用像GPShell或apdutool(来自JCDK)这样的工具来做到这一点,但我想自己复制安装过程。

令人困惑的是,在GP标准中,安装过程是:APDU命令INSTALL [for load]后跟多个LOAD命令,然后是INSTALL [for install]命令。

虽然oracle文档提出了用于安装.CAP文件的不同APDU命令序列:选择(颁发者安全域?),CAP开始,组件##开始+数据+结束(对于每个组件),CAP结束,创建小应用程序。

安装applet的两种方法是否等效?

LOAD命令DATA字段包含什么? GP标准没有指定,我知道从.CAP文件发送原始字节是错误的。 我使用GPShell成功安装了applet,但LOAD命令的DATA字段对我没有任何意义。 GPShell output

对于oracle方法,我使用Java Card Developement Kit中的scriptgen来传递APDU命令,但这些命令(B0,B2,B4,BC,BA)中的INS字节没有GP引用。scriptgen output < / p>

1 个答案:

答案 0 :(得分:4)

  

虽然oracle文档提出了不同的APDU序列   用于安装.CAP文件的命令:选择(颁发者安全域?   ),CAP begin,Component ## Begin + Data + End(对于每个组件),CAP   结束,创建小程序。

在安装applet之前,需要选择卡管理器(Issuer安全域 - Root),因为它是在卡上加载和安装applet的负责组件。另请注意,您需要通过建立安全通道(最好是SCP02)对卡管理器进行身份验证。

执行以下APDU序列以安装applet: -

  1. 选择颁发者安全域(ISD)。 00 a4 04 00 Lc AID_ISD

  2. 使用ISD进行身份验证。

    设置SCP02(参考命令初始化更新,外部验证)。 在这里,您需要卡的3DES键。请参阅文档 提供卡。

  3. 发送apdu,安装[for Load]。

  4.   

    令人困惑的是,在GP标准中安装   进程是:APDU命令INSTALL [for load]后跟多个LOAD   命令后跟INSTALL [for install]命令。

    1. 发送apdu,加载块。

      您将拥有的applet的.cap文件是其组成CAP的压缩文件 文件(http://pfa12.free.fr/doc_java/javacard_specifications/specs/jcvm/html/JCVM06cap.html)。因此,您需要将每个CAP文件逐个发送到卡上。

      加载(Header.cap),加载(Directory.cap)......等

    2. 发送apdu,安装[安装]。安装完成。