Я разрабатываю приложение Mobile POS на Android с картами ISO 14443, и у меня возникает довольно важная проблема.EMV - Генерировать AC - Код аутентификации
На данный момент, я могу прочитать все общедоступные данные с карты, посылая все правильно 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 к Статическим данным приложения с использованием Открытого ключа Эмитента в сочетании с соответствующим алгоритмом. Если Восстановленный приемник данных не равен «BC», SDA потерпел неудачу.
Я знаю, что первый шаг перед дешифрованием Восстановленных данных, чтобы получить эмитент открытого ключа (с РИД, пяти первых байтами AID, и сертификатной Index Public Key), а затем использовать его с помощью функции восстановления для расшифровки данных подписанных приложений.
Так что мои вопросы:
Как получить этот Эмитент открытый ключ с РИД и Public Key Index?
Может ли кто-нибудь помочь мне понять эту функцию восстановления для разработки функции или существует ли какая-либо существующая функция в Java для ее выполнения?
PS: В случае существующей функции, я также как и объяснение, если это возможно ^^
Да, я загрузил весь проект на прошлой неделе ^^ – Querdos