【问题标题】:What is the sequence of APDU commands to install applet to java card?将applet安装到java卡的APDU命令顺序是什么?
【发布时间】:2017-09-19 09:30:05
【问题描述】:

我有一个 .CAP 文件 (applet),我想将它安装到我的 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小程序。

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

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

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

【问题讨论】:

  • 您能指出 Oracle 文档吗?加载 .cap 文件有不同的方式;正式GP不必使用。但是,99% 的时间都在使用 GP;这更有可能是描述同一过程的不同方式。
  • 我删除了applet 标记,原因很简单,即在您使用标记时假定Web 小程序。只需javacard 就足够了。
  • oracle 文档的链接:docs.oracle.com/cd/E59935_01/guide/…。 GP 标准很可能不涵盖此命令区域(INS 字节 B0、B2、B4、BC、BA)。不过我会尝试使用 oracle 平台的 apdu 命令序列,看看它是否有效。

标签: java smartcard javacard globalplatform


【解决方案1】:

虽然 oracle 文档提出了不同的 APDU 序列 安装 .CAP 文件的命令: Select( Issuer Security Domain? ) , CAP begin, Component ## Begin+Data+End (对于每个组件), CAP 结束,创建小程序。

在安装小程序之前需要选择卡管理器(发行者安全域 - 根),因为它是在卡上加载和安装小程序的负责组件。另请注意,您需要通过建立安全通道(最好是 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,安装 [用于安装]。安装完成。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多