将applet 安装到java 卡的APDU 命令顺序是什么?

Vbs*_*Vbs 3 java smartcard javacard globalplatform

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

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

虽然 oracle 文档提出了用于安装 .CAP 文件的不同 APDU 命令序列:Select(Issuer Security Domain?)、CAP begin、Component ## Begin+Data+End(对于每个组件)、CAP End、Create Applet。

两种安装小程序的方法是否等效?

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

对于 oracle 方法,我使用 Java Card Developement Kit 中的 scriptgen 来生成 APDU 命令,但是来自这些命令(B0、B2、B4、BC、BA)的 INS 字节没有 GP 引用。脚本生成输出

hsg*_*hsg 5

虽然 oracle 文档提出了用于安装 .CAP 文件的不同 APDU 命令序列:Select(Issuer Security Domain?)、CAP begin、Component ## Begin+Data+End(对于每个组件)、CAP End、Create Applet。

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

执行以下 APDU 序列以安装小程序:-

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

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

    设置一个 SCP02(参考命令初始化更新,外部认证)。在这里,您将需要卡的 3DES 密钥。请参阅随卡提供的文档。

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

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

  1. 发送apdu,加载块。

    您将拥有的小程序的 .cap 文件是其组成 CAP 文件的 zip(http://pfa12.free.fr/doc_java/javacard_specifications/specs/jcvm/html/JCVM06cap.html)。所以你需要将每个 CAP 文件一个一个地发送到卡上。

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

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