如何将 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.
一起提供
为接触式卡片或非接触式卡片开发小程序没有区别。
要求:
- 接触式或非接触式智能卡 reader [ACR122 是非接触式 reader & ACR38 是接触式 reader 例如。还有一些reader是双接口的]
- Java 卡片开发工具包:在 Oracle 中可用。
- 一个 IDE(可选):例如 Eclipse 或 NetBeans
- 上传和安装 Java 卡片应用程序的工具(可选):例如 GlobalPlatformPro。
- 发送和接收APDU命令的工具to/from卡(可选):例如OpenSCTool。
- 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。
一周后我将拥有以下 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.
一起提供为接触式卡片或非接触式卡片开发小程序没有区别。
要求:
- 接触式或非接触式智能卡 reader [ACR122 是非接触式 reader & ACR38 是接触式 reader 例如。还有一些reader是双接口的]
- Java 卡片开发工具包:在 Oracle 中可用。
- 一个 IDE(可选):例如 Eclipse 或 NetBeans
- 上传和安装 Java 卡片应用程序的工具(可选):例如 GlobalPlatformPro。
- 发送和接收APDU命令的工具to/from卡(可选):例如OpenSCTool。
- 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。