我有一个 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,您需要:

  • A 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 的阅读器。这样对吗?

    最佳答案

    您也可以在 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/

    10-12 22:24