私は、BouncyCastle の crypto ライブラリと RSA の crypto ライブラリを使っていくつかの簡単なテストを行ってきました。私がやっていることは、次のような秘密鍵と公開鍵のペアを生成することです:
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 ベースの署名者でキーの種類を認識できません
BC と JsafeJCE を実行すると、エラーは発生せず、すべて問題ありません。両方のプロバイダーが BC の場合にも機能します。JsafeJCE で生成されたキーに BC lib で署名できないのはなぜですか?