Where can I find example of using BouncyCastle with Crypto to sign a message?
I am using IBM JDK 1.3.1 (Lotus Domino 6.5 server) and have to set crypto properties programmatically, and keep getting errors.
Please help... I am new to these lists and a couple other questions have gone unanswered. If my question is not explained well or anything just please tell me. I have no problem learning or doing whatever is necessary. I'm not asking for a handout ;-)
Here's my code in my handler class:
public class ClientWSS4JSignHandler extends BasicHandler {
[...snip...]
Message requestMessage = msgContext.getRequestMessage();
SOAPEnvelope unsignedEnvelope = requestMessage.getSOAPEnvelope();
[...snip...]
java.security.Provider provider = new org.bouncycastle.jce.provider.BouncyCastleProvider();
java.security.Security.insertProviderAt(provider, 1);
String cryptoClassName = "org.bouncycastle.jce.provider.BouncyCastleProvider";
Properties properties = new Properties();
properties.put("org.apache.ws.security.crypto.BouncyCastleProvider.keystore.type", keystoreType);
properties.put("org.apache.ws.security.crypto.BouncyCastleProvider.keystore.password", keystorePass);
properties.put("org.apache.ws.security.crypto.BouncyCastleProvider.keystore.alias", privateKeyAlias);
properties.put("org.apache.ws.security.crypto.BouncyCastleProvider.alias.password", privateKeyPass);
properties.put("org.apache.ws.security.crypto.BouncyCastleProvider.file", keystoreFile);
Crypto crypto = CryptoFactory.getInstance(cryptoClassName, properties);
WSSignEnvelope builder = new WSSignEnvelope();
logger.info("Before Signing IS....");
Document doc = unsignedEnvelope.getAsDocument();
Document signedDoc = builder.build(doc, crypto);
[...snip...]
}
Here's the error:
1589641 [AgentThread: CriminalInvestigationsAgent] INFO org.apache.ws.security.components.crypto.CryptoFactory - Using Crypto Engine [org.bouncycastle.jce.provider.BouncyCastleProvider]
1589672 [AgentThread: CriminalInvestigationsAgent] ERROR org.apache.ws.security.components.crypto.CryptoFactory - Unable to instantiate (1): org.bouncycastle.jce.provider.BouncyCastleProvider
java.lang.NoSuchMethodException: <init>
at java.lang.Class.getConstructor0(Native Method)
at java.lang.Class.getConstructor(Class.java:967)
at org.apache.ws.security.components.crypto.CryptoFactory.loadClass(CryptoFactory.java:116)
at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:72)
at ca.on.gov.jus.justiceconnect.ClientWSS4JSignHandler.invoke(ClientWSS4JSignHandler.java:108)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:121)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at ca.on.gov.jus.justiceconnect.CriminalInvestigationsServiceSoapStub.submitMajorCaseInvestigation(CriminalInvestigationsServiceSoapStub.java:154)
at ca.on.gov.jus.justiceconnect.CriminalInvestigationsAgentHelper.NotesMainHelper(CriminalInvestigationsAgentHelper.java:165)
at CriminalInvestigationsAgent.NotesMain(CriminalInvestigationsAgent.java:74)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(NotesThread.java:208)
1589719 [AgentThread: CriminalInvestigationsAgent] ERROR org.apache.ws.security.components.crypto.CryptoFactory - Unable to instantiate (2): org.bouncycastle.jce.provider.BouncyCastleProvider
java.lang.ClassCastException: org.bouncycastle.jce.provider.BouncyCastleProvider
at org.apache.ws.security.components.crypto.CryptoFactory.loadClass(CryptoFactory.java:125)
at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:72)
at ca.on.gov.jus.justiceconnect.ClientWSS4JSignHandler.invoke(ClientWSS4JSignHandler.java:108)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:121)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at ca.on.gov.jus.justiceconnect.CriminalInvestigationsServiceSoapStub.submitMajorCaseInvestigation(CriminalInvestigationsServiceSoapStub.java:154)
at ca.on.gov.jus.justiceconnect.CriminalInvestigationsAgentHelper.NotesMainHelper(CriminalInvestigationsAgentHelper.java:165)
at CriminalInvestigationsAgent.NotesMain(CriminalInvestigationsAgent.java:74)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(NotesThread.java:208)
1589719 [AgentThread: CriminalInvestigationsAgent] ERROR ca.on.gov.jus.justiceconnect.ClientWSS4JSignHandler - java.lang.RuntimeException: org.bouncycastle.jce.provider.BouncyCastleProvider cannot create instance
