如何将Java Applet上传到SmartMX控制器

时间:2015-03-18 11:59:35

标签: nfc microcontroller smartcard

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

我已经读过我可以编写Java Applet并将其上传到该控制器。但我不明白怎么做。当我unserstand,我只能使用ISO / IEC 7816接触界面上传它,它需要一些有线编程器,它将连接到该控制器的引脚。我对吗?

有人可以解释我将Java Applet上传到此控制器需要哪些设备吗?我可以无线进行(例如使用Android或某些特殊设备)吗?

2 个答案:

答案 0 :(得分:3)

开发联系人卡片或非接触式卡片之间没有区别。

要求:

  1. 接触式或非接触式智能卡读卡器[ACR122是一款非接触式读卡器&例如,ACR38是联系人阅读器。还有一些读者是双界面]
  2. Java Card开发工具包:Oracle中提供。
  3. IDE(可选): Eclipse NetBeans ,例如
  4. 上传和安装Java Card应用程序的工具(可选):例如GlobalPlatformPro
  5. 向/从卡发送和接收APDU命令的工具(可选):例如OpenSCTool
  6. JCOP工具如果您的chio上安装了JCOP操作系统并且您也想使用专有包和方法(所以它也是可选的)
  7. 请注意,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。如果是这样,他们应该提供芯片/卡。