独自の派生キーS (バイト配列も)を使用して、 inBufferバイト配列に含まれるメッセージに署名しようとしています。javacard (jc) アプレット モジュールの関数の抜粋を以下に示します。jcアプレットの開発にjavacard2.2.2ライブラリを使用しています。プロセスリクエストを送信するために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アプレットで。
前もって感謝します。