我有一台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,您需要:
智能卡读卡器可以使用4种不同的交换级别工作:
角色等级: 只有极少数读者使用这种方法。我不知道他们是否/如何支持扩展的APDU。
TPDU级别: 通过这种交换级别,许多工作都在驱动程序中完成。特别是对扩展APDU的支持由驱动程序管理,CCID驱动程序实现它。
短APDU: 这些阅读器在驱动程序的角度很容易使用,但仅限于短APDU。因此无法支持扩展APDU。
有些读者声称他们只支持短APDU,但在与制造商Windows驱动程序一起使用时可以使用扩展APDU。也许Windows驱动程序在TPDU模式或类似的东西中切换阅读器。这不是一个记录的CCID功能,因此不在我的CCID驱动程序中使用。如果您可以从阅读器制造商那里获得相关信息,我可能会在驱动程序中为阅读器提供扩展APDU支持。
简短和扩展的APDU: 阅读器提供对扩展APDU的支持。
我认为根据上面的更新部分我得出结论,卡和读卡器必须支持EXTENDED-APDU。并检查是否符合扩展APDU,我必须搜索产品文档以及提供给我们的网站支持扩展APDU的读者列表。这样对吗?
答案 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