在一周内,我将拥有以下SmartMX控制器:NXP P5CD041(在NFC环中)。据我所知,它有2个接口:ISO / IEC 14443 A非接触式接口和ISO / IEC 7816接触界面。
我已经读过我可以编写Java Applet并将其上传到该控制器。但我不明白怎么做。当我unserstand,我只能使用ISO / IEC 7816接触界面上传它,它需要一些有线编程器,它将连接到该控制器的引脚。我对吗?
有人可以解释我将Java Applet上传到此控制器需要哪些设备吗?我可以无线进行(例如使用Android或某些特殊设备)吗?
答案 0 :(得分:3)
开发联系人卡片或非接触式卡片之间没有区别。
要求:
请注意,3,4和5是可选的,因为您可以使用相同的Java Card Development Kit工具来执行任何操作。 (但这些工具比JCDK工具更友好)
如果选择 Eclipse 作为IDE,则必须向其添加名为Eclipse-JCDE的插件,如果选择NetBeans作为IDE,则默认安装Java Card插件[在新版本]。
示例:
这是一个简单的 helloWorld applet(Java Card应用程序)程序,它返回" Hello Wolrd"在接收任何命令时:
1-在IDE中编写this程序。
2-为程序包分配5到16个字节的数字,将另一个作为AID(应用程序标识符)分配给应用程序,并将 .java 文件编译为 .class 使用Java Development Kit。
3-使用Java Card Development Kit直接或间接使用这些IDE插件将上一步的 .class 文件转换为 .cap 文件。
4-将您的卡插入阅读器(非接触式卡带入阅读器领域)并使用GlobalPlatformPro命令在芯片上上传并安装 .cap 文件,如下所示:(在此步骤你做认证程序,你需要一些键)
CommandLine:> gp -install "capFileAddress"
5-使用Opensctool使用其AID选择您的applet并向其发送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命令进行选择。以及所有其他命令引用所选的小程序。
3-什么是APDU?它是一种协议,其中命令被定义为十六进制数字序列。您可以使用此命令与卡进行通信。
4- OpenSCTool和GlobalPlatformPro可满足您的一切需求。但是如果你想编写自己的工具,你可以使用PyScard库用于Python或 javax.smartcardio 包用于Java程序。
答案 1 :(得分:1)
正如我所说,我只能使用ISO / IEC 7816联系人上传它 接口,它需要一些将连接的有线程序员 到这个控制器的引脚。我是对的吗?
我还没有检查过这部分的数据表,但无论如何都应该能够通过ISO7816界面上传你的applet。 "程序员"你需要的只不过是普通的智能卡读卡器。这些便宜。你可以得到他们约12€/ $。购物时请确保它支持PC / SC界面(95%的读者都这样做,但只是检查以防万一)。
如果您的SmartMX芯片采用带有集成NFC天线的智能卡,那么您就完成了。它几乎适合任何读者。如果你得到裸芯片,你必须连接ISO7816信号:时钟,数据,电源,复位和接地。由于读卡器非常便宜,你可以将其打开并将一些电线焊接到其上。保持在20厘米以下。
我可以无线进行(例如使用Android或某些特殊设备)
也许。 SmartMX将作为IsoDep标签出现在Android手机上。您可以通过NFC交换相同的数据,因为您可以通过ISO7816进行交换。两个接口都使用ISO7816-4协议。但是,无线接口上可能会限制对安装/删除小程序等特权操作的访问。
此外,您还没有从适用于Android的SDK中获得精彩的上传工具。
要开发applet,您需要Oracle的JavaCard SDK。它附带一个模拟器,因此您可以尝试一些示例并运行它们。据我所知,SDK还包含一系列脚本,允许将applet上传到各种智能卡,包括JCOP / SmartMX。
您可能还需要身份验证密钥才能安装applet。如果是这样,他们应该提供芯片/卡。