我有一个 ACR38 samrt-card-reader 和一些符合 GP Spec [02] 的 Javacard [2.1.1]。
据我所知,有两种 APDU, Short-APDU [APDU with LC
or/and LE
short than 255
] 和 Extended-APDU [APDU with LC
or/and LE
]
是对的吗?
我们在 255
协议(protocol)中发送 Short-APDU,在 T=0
协议(protocol)中发送 Extended-APDU。
是对的吗?
我成功地将 Short-APDU 发送到我的卡。 [通过 GPJ , GPShell , OpenSC-Tool ]。
现在,我想知道:
1: 如果我想使用Extended APDU,我的卡必须支持吗?或者我的读者必须支持它?或两者!?或者所有的卡和所有的读卡器都支持 Short-APDUs 和 Extended-APDUs?
2: 如果它们必须支持 EXTENDED-APDU,我如何检查它们是否合规?
3: 我需要其他工具还是可以使用相同的 GPJ、GPSShell 和 Opensc-tool 来发送 Extended-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 的阅读器。这样对吗?
最佳答案
您也可以在 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
关于smartcard - 向 Javacard 发送扩展 APDU,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24240558/