La lecture de la courbe elliptique de la clé privée à partir d'un fichier avec BouncyCastle

La BouncyCastle Api de cryptographie permet de créer et vérifier des signatures numériques à l'aide de l'ordinaire java.security paquet d'objets, tels que des java.security.PublicKey, java.security.PrivateKey et leur conteneur java.security.KeyPair.

Suppose que je utiliser OpenSSL pour créer une .pem (ou, si cela est plus facile, une .der fichier) contenant la courbe elliptique d'une clé privée, que je veux utiliser mon application. Par exemple, il ressemble à ceci:

-----BEGIN EC PARAMETERS-----
BgUrgQQACg==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIDzESrZFmTaOozu2NyiS8LMZGqkHfpSOoI/qA9Lw+d4NoAcGBSuBBAAK
oUQDQgAE7kIqoSQzC/UUXdFdQ9Xvu1Lri7pFfd7xDbQWhSqHaDtj+XY36Z1Cznun
GDxlA0AavdVDuoGXxNQPIed3FxPE3Q==
-----END EC PRIVATE KEY-----

Comment puis-je utiliser le BouncyCastle Api pour obtenir un java.security.KeyPair contenant à la fois cette clé privée et une clé publique correspondante?

Veuillez noter que je veux utiliser les Api disponibles dans BouncyCastle 1.50 (qui est en vigueur au moment de l'écriture) et pas d'Api obsolète. Ce qui malheureusement exclut la PEMReader classe utilisée chez d'autres réponses. En outre, cette question est spécifique à la forme des courbes elliptiques; ils contiennent des paramètres supplémentaires comparativement RSA ou DSA fichiers de la clé.

Le EC PARAMETERS bloc dans votre fichier est un accident de la voie openssl ecparam -genkey fonctionne par défaut; il n'est pas requis ou utilisés dans le cadre de la clé réelle et vous pouvez l'omettre en spécifiant -noout qui est certes un peu évident. La véritable clé de la structure ("caché" dans le base64/DER données) pour CE(DSA/DH) t contient un certain nombre de paramètres info qui RSA n'est pas, mais DSA t.

OriginalL'auteur DCKing | 2014-04-09