Я использовал карту JCOP для создания пары ключей ECC. Я могу создать ECPrivateKey
, ECPublicKey
, KeyPair
без каких-либо проблем, но выдает исключение CryptoException.ILLEGAL_VALUE
, когда genKeyPair()
. Что не так с моей картой или моей операцией? Я понятия не имею. Не могли бы вы сказать мне, где я допустил ошибку? Очень признателен!
Кстати, я обнаружил, что JCAlgTest столкнулся с той же проблемой, пожалуйста, проверьте отчет о тестировании здесь .
Вот мой код.
public void process(APDU apdu)
{
if (selectingApplet())
{
return;
}
byte[] buf = apdu.getBuffer();
switch (buf[ISO7816.OFFSET_INS])
{
case (byte)0x00:
JCSystem.requestObjectDeletion();
break;
case (byte)0x01:
ecPubKey = (ECPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PUBLIC, KeyBuilder.LENGTH_EC_FP_160, false);
ecPriKey = (ECPrivateKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PRIVATE, KeyBuilder.LENGTH_EC_FP_160, false);
break;
case (byte) 0x02:
kp = new KeyPair(ecPubKey, ecPriKey);
break;
case (byte) 0x03:
try {
kp.genKeyPair();
} catch (CryptoException e) {
short reason = e.getReason();
apdu.setOutgoing();
apdu.setOutgoingLength((short) 2);
Util.setShort(buf, (short) 0, reason);
apdu.sendBytes((short) 0, (short) 2);
ISOException.throwIt((short) 0x6F00);
}
break;
default:
ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
}
}
ALG_EC_FP
любой длины. Добавление вашей программы к вопросу может быть полезно для зрителей. Инициализировали ли вы ключи перед вызовом методаgenKeyPair()
при создании объекта пары ключей (используя методkeypair()
)? - person Ebrahim Ghasemi   schedule 14.03.2016