我正在使用 ISO 14443 卡在 Android 上开发移动 POS 应用程序,我面临一个相当重要的问题。
目前,我可以通过发送所有正确的 APDU 命令来读取卡中的所有公共数据IsoDep.transceive
我目前必须处理CDOL1
,特别是Data Authenticate Code
以下是我从测试卡中收集的三个 CDOL:
9F0206 9F0306 9F1A02 9505 5F2A02 9A03 9C01 9F3704 9F3501 9F4502 9F4C08 9F3403
9F0206 9F0306 9F1A02 9505 5F2A02 9A03 9C01 9F3704 9F3501 9F4502 9F4C08 9F3403 9F2103 9F4005
9F0206 9F0306 9F1A02 9505 5F2A02 9A03 9C01 9F3704 9F3501 9F4502 9F4C08 9F3403 9F5301
EMV 书 2 说:
为了获得表 7 中指定的恢复数据,使用发行者公钥结合相应的算法,对签名静态应用数据应用附件 A2.1 中指定的恢复函数。如果 Recovered Data Trailer 不等于“BC”,则 SDA 失败。
我知道解密恢复数据之前的第一步是获取颁发者公钥(带有 RID、AID 的前五个字节和证书颁发机构公钥索引),然后将其与恢复功能一起使用来解密签名的应用程序数据.
所以我的问题是:
如何获得带有 RID 和公钥索引的颁发者公钥?
任何人都可以帮助我理解这个恢复功能以便开发一个功能,或者 Java 中是否有任何现有的功能可以做到这一点?
PS:在现有功能的情况下,如果可能的话,我还想解释一下^^