Как написать TLV [TAG_MAX_ATTEMPTS]? - PullRequest
0 голосов
/ 08 ноября 2019

Я использую смарт-карту с Java-апплетом JCOP 4.7. Я хочу создать объект аутентификации, например, UserID. Команда writeUserID имеет следующие аргументы: CLA, INS, P1, P2, Lc, TLV [TAG_POLICY], TLV [TAG_MAX_ATTEMPTS], TLV [TAG_1], TLV [TAG_2].

Я знаю, TLV принимает TAG,ДЛИНА и ЗНАЧЕНИЕ аргументов. Мой вопрос: как я могу получить байты для TLV [TAG_MAX_ATTEMPTS], если я хочу установить максимальное количество попыток в 3 для USERID, который я создаю?

[TAG_MAX_ATTEMPTS] имеет значение 0x12, а в документе описания апплета говорится, что для него требуется максимальное количество байтов в 2 байта. В этом случае, каким будет мой байт APDU для TLV [TAG_MAX_ATTEMPTS]?

Например: я знаю, что TLV [TAG_1] является 4-байтовым идентификатором объекта, тогда его соответствующий байт будет "41047FFF0001", где "41" - это значение для [TAG_1], "04" - это длина и "7FFF0001 "- 4-байтовый идентификатор объекта.

Согласно моему пониманию, я даю «12020003», где «12» - это значение [TAG_MAX_ATTEMPTS], «02» - длина и «0003» - 2-байтовое значение.

Когда я передаю этозначение в моем APDU, я получаю ошибку "6985", что означает, что условия не выполнены.

Может кто-нибудь сказать мне, где я иду не так?

...