Получение значения CryptoException.ILLEGAL при использовании HMACKey.setkey - PullRequest
0 голосов
/ 25 октября 2018

Я хочу сгенерировать подпись HMAC_SHA1 в JavaCard Applet

Я пытаюсь подписать сообщение, которое содержится в байтовом массиве inBuffer S (байтовый массив, 64 байта).Фрагмент функции из модуля апплета javacard (jc) приведен ниже.Я использую библиотеку javacard3.0.1 для разработки апплета jc.

 Signature m_sessionMAC = null;
 HMACKey keyType = null;


 // Create HMAC Key Used in Mac
 m_sessionMAC = Signature.getInstance(Signature.ALG_HMAC_SHA_1, false);

// Create HMAC Key Used in Mac
keyType = (HMACKey) KeyBuilder.buildKey(KeyBuilder.TYPE_HMAC, KeyBuilder.LENGTH_HMAC_SHA_256_BLOCK_64, false); 
keyType.setKey(S,(short) 0, (short) S.length);

этот keyType.setKey приводит к исключению как ILLEGAL_VALUE, пожалуйста, сообщите мне, что я делаю неправильно?

1 Ответ

0 голосов
/ 25 октября 2018

Длина ключа указывается в битах - со ссылкой KeyBuilder.buildKey () документация :

keyLength - размер ключа в битах .Допустимые длины ключа зависят от типа ключа.Некоторые общие длины ключей перечислены выше в константах LENGTH_ *, например, LENGTH_DES.

Что означает:

  • использование 512 для 64-байтового ключа

  • используйте 64 для 8-байтового ключа

Обратите внимание, что вы можете использовать любую длину ключа для HMAC-SHA1, но ключи длиннее, чемРазмер блока (который составляет 64 байта для SHA-1) перед использованием преобразуется в их хэш SHA-1 (см., например, здесь ).

Удачи в вашем проекте!

...