4

我通常使用 JCOP 编写 Java Card 软件,但现在我正在尝试其他开发结构以获得更多见解。所以我使用了一个简单的 HelloWorld.java,因为我也开始在 JCOP 上使用这个 - http://umer555.wordpress.com/2012/05/17/java-card-hello-world-applet/

现在我尝试使用 Java Card 3.0(经典,所以我想它应该像 2.2.2 一样工作)在 NetBeans 上运行它,它就像一个开箱即用的魅力。

对我来说,下一步是尝试使用 Eclipse 和 JCDE。现在,通过创建 cap 文件,我将其作为前三行(在 APDUTool 中响应 9000):

powerup;
// Select the installer applet
0x00 0xA4 0x04 0x00 0x09 0xa0 0x00 0x00 0x00 0x62 0x03 0x01 0x08 0x01 0x7F;
0x80 0xB0 0x00 0x00 0x00 0x7F;

作为下一步,我尝试使用 AID 010203040501 创建我的“HelloWorld”小程序

// create HelloWorld applet
0x80 0xB8 0x00 0x00 0x8 0x6 0x01 0x02 0x03 0x04 0x05 0x01 0x00 0x7F;

这返回

0x80 0xb8 0x00 0x00 0x08 0x06 0x01 0x02 0x03 0x04 0x05 0x01 0x00 0x7f;
CLA: 80, INS: b8, P1: 00, P2: 00, Lc: 08, 06, 01, 02, 03, 04, 05, 01, 00, Le: 00
, SW1: 64, SW2: 44

并且 JCWDE 报告“调用的 install() 方法的异常:...”

所以从响应中我发现小程序没有加载到模拟器中,但我不知道为什么会这样!

4

1 回答 1

0

卡中没有“安装程序小程序”。有一个卡片管理器小程序,它执行所有 cad 系统操作。

我知道的卡经理 AID 是:

const
  VISA_CARDMANAGER_AID = 'A0000000030000';
  MASTERCARD_CARDMANAGER_AID = 'A0000000040000';
  GEMPLUS_CARDMANAGER_AID = 'A000000018434D00';

你的卡真的是 JCOP 一张吗?

要开始安装小程序,您需要先发出安装/加载命令(CLA=80/84,INS = E6)。在您的情况下,出于某种原因,您从 80/84 和 B8 开始。

安装/加载后,您需要发出 LOAD 命令将 cap 文件上传到卡。

请参阅 GlobalPlatform 文档以了解有关 APDU 命令的更多信息(在 Google 中搜索名为“GPCardSpec_v2.2.pdf”的文档或从此处下载:http ://www.globalplatform.org/specificationscard.asp

于 2013-10-19T14:44:47.363 回答