2016-12-05 5 views
1

J'ai un projet de démarrage Spring (1.4.2.RELEASE) avec bouncycastle comme une dépendance dans le pom.xml comme dans les domaines suivants:botte printemps et les fournisseurs JCA

pom.xml 
... 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcprov-jdk15on</artifactId> 
    <version>1.54</version> 
</dependency> 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcpkix-jdk15on</artifactId> 
    <version>1.54</version> 
</dependency> 
... 

Cependant, lorsque je tente de préciser "BC" en tant que fournisseur pour une opération JCA dans mon code, comme:

Signature aSig = Signature.getInstance("SHA256withRSA","BC");

Je reçois la norme aucune exception du fournisseur:

java.security.NoSuchProviderException: no such provider: BC

malgré l'entrée

security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider

dans le fichier java.security de mon jre.

Avec cette dépendance dans mon dossier pom, le pot construit a les pots de château gonflable dans le dossier BOOT-INF/lib:

3277268 Tue Dec 29 12:46:28 EST 2015 BOOT-INF/lib/bcprov-jdk15on-1.54.jar 
673715 Tue Dec 29 12:46:02 EST 2015 BOOT-INF/lib/bcpkix-jdk15on-1.54.jar 

Je peux accéder aux classes dans les sans problème, mais JCA » t trouver le fournisseur.

Donc, est-ce que JCA requiert que les fichiers jar du fournisseur soient dans jre/lib/ext?

... ou manque-t-il quelque chose?

EDIT:

Cependant, ceci:

Signature.getInstance("SHA256withRSA",new BouncyCastleProvider());

œuvres.

Répondre

2

Vous devez installer le fournisseur Bouncycastle avant de l'utiliser. Voir http://www.bouncycastle.org/wiki/display/JA1/Provider+Installation

Installation du fournisseur Dynamiquement

import org.bouncycastle.jce.provider.BouncyCastleProvider; 
... 
Security.addProvider(new BouncyCastleProvider()); 

Installation du fournisseur statiquement

Ajouter le fournisseur comme la dernière entrée dans $JAVA_HOME/jre/lib/security/java.security

security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider 

Ajouter le fournisseur Bouncy Castle pot à le $JAVA_HOME/jre/lib/ext

+0

Je fais l'installation statique ... voir mon message original. – RobD

+0

Ensuite, vous devez ajouter les jars dans 'jre/lib/ext', n'utilisez pas non plus positión 1 car 'bouncycastle' peut avoir des dépendances. Voir ce lien d'Oracle https://docs.oracle.com/cd/E19830-01/819-4712/ablsc/index.html qui fait référence à bouncycastle. dans ces autres liens indiquent également qu'il est nécessaire d'inclure les jars dans JVM 'lib/ext' http://tomee.apache.org/bouncy-castle.html https://docs.jboss.org/jbossas/docs/Server_Configuration_Guide /4/html/ch09s19s04s04.html – pedrofb

+0

Merci pour vos réponses ... Je les apprécie. En ce qui concerne votre commentaire, pourquoi: signature.getInstance ("SHA256withRSA", nouveau BouncyCastleProvider()); travail mais signature.getInstance ("SHA256withRSA", "BC"); échoue quand les jars sont * not * dans le dossier jre/lib/ext? – RobD