如何使用Visual C ++ / PCSC以编程方式加载Java卡小程序(.cap文件)

时间:2010-09-23 14:42:39

标签: c++ visual-c++ pcsc

我目前正处于一个需要我将JavaCard应用程序Applet(.cap)文件加载到JavaCard的项目中。我们的框架基于Visual C ++和PCSC,因此我们需要将相同的applet加载到一系列JavaCards中。有谁知道如何处理这个?我的意思是,我应该从哪里开始。谢谢!

1 个答案:

答案 0 :(得分:3)

你说这不是一件微不足道的工作。

不同的javacards之间存在差异,但通常需要做4件事:

  • 初始化与卡的安全通信(因为许多javacards是“全球平台”卡,他们需要一个安全的通道)
  • 发送命令“我想安装小程序”
  • 发送要安装的applet的二进制数据
  • 在发送二进制数据后发送命令以“实例化”applet

我建议最初使用eclipse插件安装applet,因为你可以看到插件生成的APDU来执行上述步骤。一旦知道必须发送的APDU命令来安装applet,就可以使用C ++代码中的PCSC接口直接发送这些命令,以便在大量卡上自动安装。

我的公司制作了一个名为Card Boss的网络浏览器插件,用于通过浏览器执行此类操作(通过pcsc进行卡片通信) - 您可以使用一个网页,您可以在其中键入自己的APDU并将其发送到以下网址的卡片:

https://cardboss.cometway.com/content.agent?page_name=Card+Boss+Lab

如果您使用我们的工具,您的applet安装脚本应如下所示(请注意,这是使用默认jcop键的JCOP卡的脚本)

    MESSAGE BOX Installing applets...

    INIT CHANNEL 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f, 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f

    // INSTALL CAP: 
    SEND 80 E6 02 00 1D 10 A0 00 00 00 09 00 03 FF FF FF FF 89 10 71 00 01 08 A0 00 00 00 03 00 00 00 00 00 00 

    // LOADING CAP: 
    SEND 80 E8 00 00 FA C4 82 01 03 01 00 25 DE CA FF (snip, I removed a bunch 
of binary data representing the cap file to shorten this post, and you might
need multiple SEND commands because of limits on the size of APDUS)

    // INSTANTIATING Applet
    SEND 80 E6 0C 00 1E 05 63 6F 6D 65 74 07 63 6F 6D 65 74 00 01 05 00 00 00 00 00 01 00 06 C9 04 68 2C 00 03 00 00