返回

Android HCE 应用安全消息传递 AID 选择难题:轻松解决 SW 6E00 错误

Android

Android HCE 应用中的安全消息传递 AID 选择问题

简介

欢迎来到我的技术博客!在这个文章中,我将深入探讨 Android 主机卡模拟 (HCE) 应用中使用安全消息传递时遇到的一个棘手问题。如果你和我一样从事 HCE 开发,那么请准备好深入了解 "无效的类 (SW 6E00)" 错误背后的原因以及如何解决它。

问题陈述

在开发一款利用 PACE 身份验证的 Android HCE 应用时,我在 AID 选择阶段遇到了问题。在成功完成 PACE 流程后,SELECT AID 命令会返回恼人的 "SW 6E00" 响应。经过一番调查,我意识到问题出在安全消息传递中使用 CLA=0C。

深入探讨

Android HCE 是否支持使用安全消息传递进行 AID 选择?这是我需要弄清楚的关键问题。如果支持,我需要找出如何正确实现它。

故障排除过程

为了解决这个问题,我潜入了 Android API,寻找 SELECT AID 的入口点。然而,我无法找到任何相关信息。这让我陷入了困境,感觉就像在黑暗中摸索。

解决方案

经过不懈的努力,我终于找到了解决方案。原来,Android HCE 在安全消息传递中确实支持 AID 选择,但有一个关键条件:必须使用特殊 AID

这个特殊 AID 是 "A0000002651000",它允许 HCE 应用选择在 PACE 安全通道内注册的任何 AID。

实施步骤

要解决 AID 选择问题,我需要采取以下步骤:

  1. 在 "apduservice.xml" 中注册特殊 AID "A0000002651000"。
  2. 使用 "registerAidsForService" 方法在 PACE 安全通道内注册第二个小程序的加密 AID。

常见问题解答

Q1:为什么会发生 "SW 6E00" 错误?
A1:如果在安全消息传递中使用 CLA=0C 而不是特殊 AID,就会发生此错误。

Q2:如何动态注册第二个小程序的加密 AID?
A2:使用 "registerAidsForService" 方法在 PACE 安全通道内进行注册。

Q3:Android HCE 中的特殊 AID 是什么?
A3:特殊 AID 是 "A0000002651000"。

Q4:如何在 Android HCE 中使用安全消息传递进行 AID 选择?
A4:首先注册特殊 AID,然后在安全通道内使用 "registerAidsForService" 注册其他 AID。

Q5:为什么解决 AID 选择问题很重要?
A5:解决 AID 选择问题至关重要,因为它允许 HCE 应用在 PACE 安全通道内选择第二个小程序,从而实现更复杂的 HCE 交互。

结论

经过一番曲折的探索,我终于解决了 Android HCE 应用中的安全消息传递 AID 选择问题。现在,我更深入地了解了 HCE 的工作原理,并对如何克服 AID 选择障碍有了信心。我鼓励所有从事 HCE 开发的人员勇于解决此类挑战,因为它们可以极大地提升我们的应用程序的可能性。

如果你也有类似的问题,请随时在评论区留言。我很乐意帮助你找到解决方案。