将扩展APDU发送到Javacard

时间:2014-06-16 09:32:34

标签: smartcard javacard apdu smartcard-reader

我有一台ACR38 samrt-card-reader和一些符合GP Spec [02]的Javacard [2.1.1]。

据我所知,有两种APDU,短APDU [APDU LC或/ {和LE短于255]和< strong>扩展APDU [APDU LC或/ LE大于255

是吗?

我们在T=0协议中发送Short-APDU,并在T=1协议中发送扩展APDU。

是吗?


我已成功将Short-APDU发送到我的卡。 [通过 GPJ GPShell OpenSC-Tool ]。

现在,我想知道:

1:如果我想使用扩展APDU,我的卡必须支持吗?或者我的读者必须支持它?或两者!?或者所有卡和所有读卡器都支持短APDU和扩展APDU?

2:如果他们必须支持EXTENDED-APDU,我该如何检查这些是否合规?

3:我需要其他工具,还是可以使用相同的GPJ,GPShell和Opensc工具发送扩展APDU?如何?


更新 我发现以下数据here,但如果有人向我提供更详细的数据,我会感激不尽:

为了能够使用扩展的APDU,您需要:

  • T = 1张卡
  • 在TPDU或扩展APDU中工作的智能卡读卡器

智能卡读卡器可以使用4种不同的交换级别工作:

  • 字符
  • TPDU
  • 短APDU
  • 简短和扩展的APDU

角色等级: 只有极少数读者使用这种方法。我不知道他们是否/如何支持扩展的APDU。

TPDU级别: 通过这种交换级别,许多工作都在驱动程序中完成。特别是对扩展APDU的支持由驱动程序管理,CCID驱动程序实现它。

短APDU: 这些阅读器在驱动程序的角度很容易使用,但仅限于短APDU。因此无法支持扩展APDU。

有些读者声称他们只支持短APDU,但在与制造商Windows驱动程序一起使用时可以使用扩展APDU。也许Windows驱动程序在TPDU模式或类似的东西中切换阅读器。这不是一个记录的CCID功能,因此不在我的CCID驱动程序中使用。如果您可以从阅读器制造商那里获得相关信息,我可能会在驱动程序中为阅读器提供扩展APDU支持。

简短和扩展的APDU: 阅读器提供对扩展APDU的支持。

我认为根据上面的更新部分我得出结论,卡和读卡器必须支持EXTENDED-APDU。并检查是否符合扩展APDU,我必须搜索产品文档以及提供给我们的网站支持扩展APDU的读者列表。这样对吗?

1 个答案:

答案 0 :(得分:2)

您也可以在T = 0中发送扩展APDU,但为此必须支持您的卡“javacardx.apdu”。请参考javadoc链接

以下是了解您的信用卡支持的方法。

00 A4 04 00 <length of Card manager AID> <AID> [Select card manager]

00 20 00 00 08 <Card manager PIN> [verify card manager PIN]

00 80 F2 20 00 02 4F 00 - [get status command with P1 20] and [Executable Load Files and Executable Modules 4F00]

您将获得响应此命令的所有包AID,然后搜索AID“A0000000620209”。

如果可用,则支持javacardx.apdu。有关更多信息,请参阅“获取状态”命令,请参阅GP 2.2.1