Я пытаюсь подписать сообщение, содержащееся в массиве байтов inBuffer, используя мой собственный производный ключ S (также массив байтов). Фрагмент функции из модуля апплета javacard (jc) приведен ниже. Я использую библиотеку javacard2.2.2 для разработки апплета jc. Я использую приложение Android для отправки запроса процесса. Я получаю код возврата "6A81", что означает "функция не поддерживается". Теперь я понятия не имею, как действовать, поскольку я не понял, что он упоминает о том, что HMAC_SHA256 не поддерживается, или я делаю какую-то ошибку в функции. Пожалуйста помоги.
Signature m_sessionMAC = null;
HMACKey keyType = null;
Sign = new byte[64];
bytesRead = apdu.setIncomingAndReceive();
// Create HMAC Key Used in Mac
m_sessionMAC = Signature.getInstance(Signature.ALG_HMAC_SHA_256, 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);
m_sessionMAC.init(keyType, Signature.MODE_SIGN);
//Generate Signature on inBuffer (received data to sign)
echoOffset = m_sessionMAC.sign(inBuffer, ISO7816.OFFSET_CDATA, ISO7816.OFFSET_LC, Sign , (short)0);
Util.arrayCopyNonAtomic(Sign, ( short ) 0, inBuffer, ( short ) 0, echoOffset);
apdu.setOutgoingAndSend( ( short ) 0, (short) echoOffset );
Пожалуйста, помогите мне в этом отношении или предоставьте какие-либо указатели для реализации симметричного шифрования HMAC_SHA256 или HMAC_SHA1. в апплете javacard.
Заранее спасибо.