Hi, I am trying to test CXF Timestamp Signature Encrypt EXAMPLE. I have generated key stores for client and server and kept under the relevant folders.
/*I have the following configuration for the jaxws:endpoint.*/ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <bean id="personServ" class="com.unitedcoders.demo.PersonServiceImpl" /> <bean id="logInBound" class="org.apache.cxf.interceptor.LoggingInInterceptor" /> <bean id="logOutBound" class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> <jaxws:endpoint id="personService" implementor="#personServ" address="/personService"> <jaxws:inInterceptors> <ref bean="logInBound" /> <ref bean="inbound-security" /> </jaxws:inInterceptors> <jaxws:outInterceptors> <ref bean="logOutBound" /> <ref bean="outbound-security" /> </jaxws:outInterceptors> </jaxws:endpoint> <bean id="inbound-security" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"> <constructor-arg> <map> <entry key="action" value="Timestamp Signature Encrypt"/> <entry key="#{T(org.apache.ws.security.handler.WSHandlerConstants).SIG_PROP_FILE}" value="server-crypto.properties"> </entry> <entry key="#{T(org.apache.ws.security.handler.WSHandlerConstants).DEC_PROP_FILE}" value="server-crypto.properties"> </entry> <entry key="#{T(org.apache.ws.security.handler.WSHandlerConstants).PW_CALLBACK_REF}"> <ref bean="myPasswordCallback" /> </entry> </map> </constructor-arg> </bean> <bean id="outbound-security" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"> <constructor-arg> <map> <entry key="action" value="Timestamp Signature Encrypt"/> <entry key="user" value="server"/> <entry key="signaturePropFile" value="server-crypto.properties"/> <entry key="encryptionPropFile" value="server-crypto.properties"/> <entry key="encryptionUser" value="useReqSigCert"/> <entry key="#{T(org.apache.ws.security.handler.WSHandlerConstants).PW_CALLBACK_REF}"> <ref bean="myPasswordCallback" /> </entry> <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/> <entry key="encryptionParts" value="{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body"/> <entry key="encryptionSymAlgorithm" value="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> </map> </constructor-arg> </bean> <bean class="com.unitedcoders.security.ServerPasswordCallback" id="myPasswordCallback" /> </beans> /*I have the following configuration for the jaxws:client.*/ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <bean id="personServ" class="com.unitedcoders.demo.PersonServiceImpl" /> <bean id="logOutBound" class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> <bean id="logInBound" class="org.apache.cxf.interceptor.LoggingInInterceptor" /> <jaxws:client id="personServiceClient" serviceClass="com.unitedcoders.demo.PersonService" address="http://localhost:8080/CXFExampleService"> <jaxws:inInterceptors> <ref bean="logInBound" /> <ref bean="inbound-security" /> </jaxws:inInterceptors> <jaxws:outInterceptors> <ref bean="logOutBound" /> <ref bean="outbound-security" /> </jaxws:outInterceptors> </jaxws:client> <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" id="outbound-security"> <constructor-arg> <map> <entry key="action" value="Timestamp Signature Encrypt" /> <entry key="user" value="client" /> <entry key="signaturePropFile" value="client-crypto.properties" /> <entry key="encryptionPropFile" value="client-crypto.properties" /> <entry key="signatureKeyIdentifier" value="DirectReference" /> <entry key="encryptionUser" value="server" /> <entry key="#{T(org.apache.ws.security.handler.WSHandlerConstants).PW_CALLBACK_REF}"> <ref bean="clientPasswordCallback" /> </entry> <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/> <entry key="encryptionParts" value="{Element}{http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body"/> <entry key="encryptionSymAlgorithm" value="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> </map> </constructor-arg> </bean> <bean class="com.unitedcoders.client.ClientPasswordCallback" id="clientPasswordCallback" /> <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="inbound-security"> <constructor-arg> <map> <entry key="action" value="Timestamp Signature Encrypt" /> <entry key="signaturePropFile" value="client-crypto.properties" /> <entry key="decryptionPropFile" value="client-crypto.properties" /> <entry key="#{T(org.apache.ws.security.handler.WSHandlerConstants).PW_CALLBACK_REF}"> <ref bean="clientPasswordCallback" /> </entry> </map> </constructor-arg> </bean> </beans> /*I have deployed the service to tomcat successfully. when I run the client below.*/ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"client-context.xml"}); System.out.println("Context"+context.getBeanDefinitionCount()); PersonService client = (PersonService)context.getBean("personServiceClient"); System.out.println("Client:" +client.greetPerson("Padma")); /* I am getting the following exception.*/ Interceptor for {http://demo.unitedcoders.com/}PersonServiceService#{http://demo.unitedcoders.com/}greetPerson has thrown exception, unwinding now java.lang.IllegalArgumentException: not an RSA key! at org.bouncycastle.jce.provider.JCERSACipher.engineGetKeySize(Unknown Source) at javax.crypto.Cipher.b(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.init(DashoA13*..) at javax.crypto.Cipher.init(DashoA13*..) at org.apache.ws.security.message.WSSecEncryptedKey.prepareInternal(WSSecEncryptedKey.java:257) at org.apache.ws.security.message.WSSecEncrypt.prepare(WSSecEncrypt.java:182) at org.apache.ws.security.message.WSSecEncrypt.build(WSSecEncrypt.java:223) at org.apache.ws.security.action.EncryptionAction.execute(EncryptionAction.java:95) at org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:232) at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor.access$200(WSS4JOutInterceptor.java:52) at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:260) at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:136) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:565) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135) at com.sun.proxy.$Proxy36.greetPerson(Unknown Source) at com.unitedcoders.client.PersonServiceClient.main(PersonServiceClient.java:21) Please help me figure out this issue -- View this message in context: http://cxf.547215.n5.nabble.com/java-lang-IllegalArgumentException-not-an-RSA-key-at-org-bouncycastle-jce-provider-JCERSACipher-engi-tp5735564.html Sent from the cxf-user mailing list archive at Nabble.com.
