代码之家  ›  专栏  ›  技术社区  ›  Ryan Malley

有没有办法不用select APDU命令来选择javacard小程序?

  •  2
  • Ryan Malley  · 技术社区  · 7 年前

    2 回复  |  直到 7 年前
        1
  •  3
  •   Maarten Bodewes    7 年前

    如果小程序被标记为默认选定的小程序,则小程序在自动条码读取器/自动条码读取器之后自动选定。

    如果您仅通过匹配APDU标题来阻止此给定小程序的SELECT命令 援助,那么你应该确保:

    • Lc字节和命令数据与AID匹配
    • Lc字节和命令数据匹配AID的任何子字符串前缀


    [编辑]:重读这个问题,我不确定你的意思是否是阻止小程序中的选择。我的解决方案旨在从PCD的角度使用。

        2
  •  2
  •   Maarten Bodewes    7 年前

    默认选中 ,小程序的选择始终使用“按名称选择”(其中名称是应用程序标识符或辅助工具)。这可以使用 Applet#selectingApplet() APDU.getProtocol()

    然而 SW_NO_ERROR (这是SW 9000 当然)。因此,前面的解决方案无法解决任何问题。


    Applet.select() 。但是,您还无法在此通话中决定协议/媒体;APDU接口中的静态方法尚不可用。如果这是可能的,那么就有可能通过特定的接口阻止选择。所以这也帮不了你。


    最后,简单地调用 对于您收到的每个APDU。 然后抛出一个 ISOException SW_CONDITIONS_NOT_SATISFIED 或任何类似的可接受状态字(ISO/IEC没有指定要抛出哪些状态字,遗憾的是,只有哪些状态字存在)。