J'ai un Java KeyStore (JKS) et je dois le lire avec BouncyCastle.Lire JKS avec BouncyCastle
J'ai ajouté fournisseur BC
en haut de la liste des fournisseurs:
Security.insertProviderAt(new BouncyCastleProvider(), 1);
Si je crée KeyStore cette façon:
final KeyStore keystore = KeyStore.getInstance("JKS", "BC");
Je reçois une erreur:
java.security.KeyStoreException: JKS not found
Si je ne spécifie pas de fournisseur, le KeyStore sera créé avec le fournisseur Sun
et keystore.aliases()
contiendra EmptyEnumeration
.
Comme je l'ai vu dans le sujet this, BouncyCastle peut travailler avec JKS
Comment puis-je lire JKS avec BouncyCastle?
Avez-vous ajouté la ligne suivante en haut de votre programme: 'Security.addProvider (nouveau BouncyCastleProvider());'? Reportez-vous à [Section 6.0] (https://www.bouncycastle.org/specifications.html). –
@ M.Polywhirl Oui. J'ai édité la description – Kirill
Vous confondez "travailler avec" et "mettre en œuvre". Vous ne devez normalement pas spécifier le fournisseur dans l'une des méthodes 'getInstance()' de JCE. Ajoutez simplement le fournisseur avec 'Security.addProvider()' et laissez le JCE trouver les implémentations de n'importe quel fournisseur. Seuls les fournisseurs Oracle implémentent le fichier de clés JKS mais votre 'KeyStore.getInstance (" JKS "," BC "); 'force le JCE à ne regarder que BouncyCastle pour une implémentation JKS qu'il n'a pas. En outre, n'ajoutez pas le fournisseur BouncyCastle à une position particulière, sauf si vous savez vraiment ce que vous faites. –