【问题标题】:Android 4.4 hce (host-based card emulation) "processCommandApdu" apdu lengthAndroid 4.4 hce(基于主机的卡模拟)“processCommandApdu”apdu 长度
【发布时间】:2014-05-23 14:27:54
【问题描述】:

我已经在 Nexus 4、Nexus 5 和三星 Galaxy S4 手机上测试了我的 Android Java 应用程序。在测试中,阅读器发送长度最多为 252 字节的 APDU。 Nexus 手机成功接收 APDU。另一方面,Galaxy S4 手机无法接收包含超过 128 字节的 APDU。它只接收发送方 252 个字节中的前 128 个字节。

如何确定设备的最大可接收 APDU 大小?

【问题讨论】:

  • 您是否发送符合 ISO 7816-4 的 APDU(即格式为 <CLA> <INS> <P1> <P2> [[<Lc> <DATA>] <Le>] 的 APDU?
  • @MichaelRoland:是的,我正在发送符合 ISO 7816-4 的 apdus。读卡器和相同的代码适用于非接触式 jcop 智能卡没有问题。
  • 那么有趣的是,您似乎得到了与错误 #69233 不同的结果...
  • @MichaelRoland 现在我发现 Galaxy s4 实际上接收了 252 个字节。但在 2 个连续的块中。对于长度超过 128 字节的 apdu,它会两次进入 processCommandApdu 函数。

标签: java android nfc apdu hce


【解决方案1】:

目前没有找到最大可接收 APDU 长度的方法(试错除外)。

关于最大可接收 APDU 长度,有一个开放的 AOSP 错误报告 (#69233)。这份报告解释说

  1. Nexus 5 能够接收总长度为 255 字节的命令 APDU。因此,案例 3 APDU 最多可以有 250 个有效负载字节。

  2. Galaxy S4 能够接收总长度为 252 字节的命令 APDU。因此,案例 3 APDU 最多可以有 247 个有效负载字节。

【讨论】:

    【解决方案2】:

    我发现 Galaxy s4 实际上接收了 252 个字节。但在 2 个连续的块中。对于长度超过 128 字节的 apdu,它会进入 processCommandApdu 函数两次。

    【讨论】:

      【解决方案3】:

      我自己有一台 Galaxy S4,并且 mit 能够传输和/或接收最多 255 字节的 apdus。我没有尝试过extendedAPDU,但它们应该也可以。

      这可能是与读卡器(三星 Galaxy S4 和卡)组合有关的问题 来自不同制造商的卡的行为不同(在 ISO14443 标准内)。 恕我直言,三星 Galaxy S4 无法为某些卡提供足够的能量(使用 Galaxy S4 体验过)。

      除了使用其他转发器之外,您无能为力。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-11
        • 1970-01-01
        • 1970-01-01
        • 2013-12-02
        • 2014-03-10
        • 1970-01-01
        • 2014-06-03
        相关资源
        最近更新 更多