Со смарт-картой Gemalto (IAS ECC) я бы рассчитал подпись, используя закрытый ключ, хранящийся на смарт-карте. Для этого я использую команды APDU:
// Verify PIN
00 20 00 01 04 31 32 33 34
-> 90 00
// Create a context for security operation
00 22 41 B6 06 84 01 84 80 01 12
-> 90 00
// Set the hash of the document
00 2A 90 A0 14 HASH OF DOCUMENT
-> 69 85
// Calculating the signature
00 2A 9E 9A 80
-> 69 85
Моя проблема заключается в следующем: последние две команды возвращают код ошибки «69 85», что означает «Условия использования не выполнены».
Я уже пробовал несколько решений, но всегда получаю одну и ту же ошибку. Как это решить? Что может означать этот код?
После некоторых тестов я обнаружил кое-что интересное. Когда я заменяю cla "00" на "10", смарт-карта возвращает другой ответ:
// Create a context for security operation
00 22 41 B6 06 84 01 84 80 01 12
// Verify PIN
00 20 00 01 04 31 32 33 34
// Calculating the signature (I replace "00" by "10")
10 2A 9E 9A 23 30 21 30 09 06 05 2B 0E 03 02 1A 05 00 04 14 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 12 13 14 15
Я не знаю, хорошее ли это решение, потому что смарт-карта возвращает «90 00». Но это вернет содержимое моей подписи!
Спасибо за помощь!
С наилучшими пожеланиями