使用APDU将CAP文件上传到智能卡

时间:2013-01-25 10:09:36

标签: java eclipse netbeans smartcard javacard

我正在尝试将applet(.cap文件)安装到智能卡中。我读过可以使用APDU完成。我使用Netbeans创建了我的applet,它的帮助是// aid / 9AE9BE4D27 / 53。

首先构建apdu,选择installer applet

0x00 0xA4 0x04 0x00 0X09 0xA0 0x00 0x00 0x00 0x62 0x03 0x01 0x08 0x01 0x7F;

然后构建apdu,它将创建我的applet(遵循这个结构):

header: 0x80 0xb8 0x00 0x00

lc aid:

aid:

le: 0x7F;

我开发了一个应用程序,它可以使用channel.transmit(new CommandAPDU(apdu)向真实卡发送apdu命令。我想如果我发送正确的安装命令,我的.cap文件应该安装在卡中。

有了这些信息,任何人都可以帮我构建正确的apdu,将我的cap文件安装到真实卡中吗?

谢谢。

3 个答案:

答案 0 :(得分:5)

如果该卡使用的是Global Platform,那么就不那么简单了,您需要对卡管理器进行身份验证。然后发送多个命令来加载.cap文件(因为APDU可能只包含255个字节的有效负载 - GP不使用扩展长度)。然后发出INSTALL for INSTALL命令来实例化Applet(使用实例AID)。

幸运的是,有一些开源库可以构建在javax.smartcardio之上。我仍然建议阅读全球平台的基础知识,这些文件可以在线免费获得。

http://sourceforge.net/projects/gpj/

答案 1 :(得分:0)

如果您发送正确的命令APDU,那么您将能够安装它,但是如果是Global-platform卡,您需要先创建安全通道,然后您可以发送InstallForLoad和后续的加载/安装命令。 步骤顺序为:

  • 选择卡片管理员
  • 使用SCP01 / SCO02对您的卡进行身份验证 你的卡
  • 发送InstallForInstall命令
  • 发送加载命令
  • 发送InstallForInstall命令

每个命令都应该跟踪0x9000,这意味着命令执行成功。

但是你是初学者,所以你应该使用像GPShell这样的工具将.cap文件加载到卡上,然后尝试分析安装后出来的APDU。

答案 2 :(得分:0)

要安装applet并将其个性化到卡中,您需要相互身份验证包含INTERNAL AUTHENTICATE命令和EXTERNAL AUTHENTICATE。 有关详细信息,请阅读EMV CPS或GlobalPlatform。

如果您使用的是模拟器,也可以轻松安装小程序。 我使用JAVACos非常简单,它支持JC和GP库。 使用来自JAVACos的库在eclipse中开发applet,并使用scrypt使用JAVACos模拟器模拟applet来测试applet。

相关问题