支持扩展长度 APDU 的要求是啥?哪些智能手机支持它?
Posted
技术标签:
【中文标题】支持扩展长度 APDU 的要求是啥?哪些智能手机支持它?【英文标题】:What are the requirements for support of extended length APDUs and which smartphones support it?支持扩展长度 APDU 的要求是什么?哪些智能手机支持它? 【发布时间】:2014-09-18 13:06:14 【问题描述】:当我第一次尝试发送 APDU 命令并收到“超出支持的长度”错误时,我认为这只是 NFC 芯片本身的限制 - 没有办法解决。但是this site 暗示这可能是 android 操作系统中的软件问题:
许多当前可用的智能手机只能通过 NFC 传输 261 字节[2],而无需对操作系统进行重大修改。
有谁知道更多关于如何解决这个问题以及修改究竟有多“重大”的信息?
另外,你有一个列表,哪些手机支持扩展长度 APDU?如果没有,我们可能应该开始一个,因为你在 google 上真的找不到太多。
我知道三星 Galaxy Note II 支持它,而三星 Galaxy S3、Nexus 5 和 Galaxy Nexus 不支持。
【问题讨论】:
【参考方案1】:查看此网站: https://code.google.com/p/android/issues/detail?id=76598
你必须做什么:
下载 Android 源代码 在 NativeNfcManager.java 的行中将“261”更改为“2462”(如上面链接的站点所示) 构建 Android 在手机上刷入修改后的 Android 版本可以在此处找到为 Nexus 5 构建 Android 的教程: http://nosemaj.org/howto-build-android-kitkat-nexus-5
这适用于您智能手机的读卡器模式,我还不知道如何让它适用于卡模拟模式。
【讨论】:
【参考方案2】:更好/更容易/更便携的解决方案是仅发送 261 字节(或更少)并返回 ISO7816-4 状态代码 SW1-SW2 = 0x61xx,其中 xx 表示仍然可用的数据字节数。 阅读器将发送 ISO7816-4 命令“GET RESPONSE”来请求剩余的字节。
例如,如果你想从 Android HCE 发送 300 个字节,那么你将开始回复:
-
HCE:
sendResponseApdu( 250 first bytes of data + 0x6132 )
(0x32 表示剩余 50 个字节)
NFC 读卡器应发送:GET RESPONSE
HCE:sendResponseApdu( last 50 bytes of data + 0x9000 )
【讨论】:
这种方法有效吗?你试过你的解决方案了吗?以上是关于支持扩展长度 APDU 的要求是啥?哪些智能手机支持它?的主要内容,如果未能解决你的问题,请参考以下文章