Я проводил простое тестирование с использованием крипто-библиотеки BouncyCastle и крипто-библиотеки RSA. То, что я делаю, генерирует пару секретный / открытый ключ примерно так:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", "JsafeJCE");
kpg.initialize(new ECGenParameterSpec("secp384r1"));
KeyPair kp = kpg.genKeyPair();
PrivateKey priv = kp.getPrivate();
PublicKey pub = kp.getPublic();
Тогда я сгенерирую подпись вот так
Signature sig = Signature.getInstance("SHA384/ECDSA","BC");
и я пытаюсь подписать закрытый ключ:
sig.initSign(priv);
Все это приводит меня к ошибке:
java.security.InvalidKeyException: не удается распознать тип ключа в подписывающей стороне на основе ECDSA
Когда я до н.э. и JsafeJCE, я не получаю ошибки и все в порядке. Работает также, если оба провайдера являются BC. Так почему же я не могу подписать сгенерированный ключом JsafeJCE библиотеку BC?