如何将 Java 小程序上传到 SmartMX 控制器

How to upload Java Applet to SmartMX controller

一周后我将拥有以下 SmartMX 控制器:NXP P5CD041(在 NFC 环中)。据我了解,它有 2 个接口:ISO/IEC 14443 非接触式接口和 ISO/IEC 7816 接触式接口。

我读到我可以编写 Java Applet 并将其上传到此控制器。但我不明白如何。据我所知,我只能使用 ISO/IEC 7816 接触接口上传它,它需要一些有线编程器来连接到这个控制器的引脚。我对吗?

有人可以解释一下我需要将什么设备上传 Java Applet 到这个控制器吗?我可以无线方式进行吗(例如使用 Android 或一些特殊设备)?

As I unserstand, I can upload it only using ISO/IEC 7816 contact interface and it needs some wired programmer that will be connected to pins of this controller. Am I right?

我没有检查这部分的数据表,但无论如何你应该能够通过 ISO7816 接口上传你的小程序。您需要的 "programmer" 只不过是一张普通的智能卡 reader。这些很便宜。你可以花大约 12 欧元/美元买到它们。当你去购物时,确保它支持 PC/SC 接口(所有 reader 中的 95% 都支持,但只是检查以防万一)。

如果您的 SmartMX 芯片以智能卡的形式出现,并带有用于 NFC 的集成天线,那么您就完成了。它几乎适合任何 reader。如果你得到裸芯片,你必须连接 ISO7816 信号:时钟、数据、电源、复位和接地。由于 reader 非常便宜,您只需打开一个并在其上焊接一些电线即可。保持在 20cm 以下。

Can I do it wirelessly (e.g. using Android or some special device)

也许吧。 SmartMX 将作为 IsoDep 标签出现在 Android phone 上。您可以通过 NFC 交换与通过 ISO7816 交换的相同数据。两个接口都使用 ISO7816-4 协议。不过,在无线接口上可能会限制对 installing/deleting 小程序等特权操作的访问。

此外,您不会从 Android 的 SDK 中获得不错的上传工具。

要开发小程序,您需要 Oracle 的 JavaCard SDK。它带有一个模拟器,因此您已经可以尝试一些示例并 运行 它们。据我所知,SDK 还包含一堆脚本,允许将小程序上传到各种智能卡,包括 JCOP/SmartMX.

您可能还需要身份验证密钥才能安装小程序。如果是这样,它们应该与 chips/cards.

一起提供

为接触式卡片或非接触式卡片开发小程序没有区别。

要求:

  1. 接触式或非接触式智能卡 reader [ACR122 是非接触式 reader & ACR38 是接触式 reader 例如。还有一些reader是双接口的]
  2. Java 卡片开发工具包:在 Oracle 中可用。
  3. 一个 IDE(可选):例如 EclipseNetBeans
  4. 上传和安装 Java 卡片应用程序的工具(可选):例如 GlobalPlatformPro
  5. 发送和接收APDU命令的工具to/from卡(可选):例如OpenSCTool
  6. JCOP 工具,如果你的 chio 附带了一个 JCOP OS 并且你还想使用专有的包和方法(所以它也是可选的)

请注意,3、4 和 5 是可选的,因为您可以使用相同的 Java 卡开发套件工具来做任何您想做的事情。 (不过这些工具真的比JCDK工具友好多了)

如果您选择 Eclipse 作为您的 IDE,您必须添加一个名为 Eclipse-JCDE 的插件,如果您选择 NetBeans 作为 IDE,[新版本]默认安装 Java 卡片插件。

一个例子:

这是一个简单的helloWorld小程序(Java卡片应用程序),它returns"Hello Wolrd"在接收任何命令:

1- 在IDE.

中编写this程序

2- 将一个 5 到 16 字节的数字分配给包,另一个分配给应用程序作为它们的 AID(应用程序标识符)并编译 .java 文件.class 使用 Java 开发工具包。

3- 使用 Java 将上一步的 .class 文件转换为 .cap 文件卡开发工具包直接或间接使用那些 IDE 插件。

4- 将您的卡插入 reader(对于非接触式卡,请输入 reader 字段)并上传并安装 .cap使用 GlobalPlatformPro 命令在芯片上的文件如下:(在这一步中,您执行身份验证程序并且需要一些密钥)

CommandLine:> gp -install "capFileAddress"

5- 使用 Opensctool select 你的小程序使用它的 AID 并向它发送 APDU 命令并从它接收 APDU 响应:

CommandLine:> opensc-tool -s 00a40400[AID Length In hex][AID] -s [AnotherOptionalCommand]

备注:

1- AID 是卡上应用程序和包的名称。它有一个 5 字节的强制部分和一个 0 到 11 字节的可选部分。 Applet AID 的前 5 个字节必须与其包 AID 相同。

2- 当你想与卡片中的小程序进行通信时,你首先需要使用 select 命令 select 它。并且所有其他命令都引用那个 selected 小程序。

3- 什么是 APDU?它是一种协议,其中命令定义为一系列十六进制数。您使用此命令与卡片进行通信。

4- OpenSCTool 和 GlobalPlatformPro 有你需要的一切。但是如果你想写你自己的工具,你可以使用 PyScard library for Python 或者 javax.smartcardio package for Java programs。