aws-samples / aws-cloudhsm-jce-examples

Sample applications demonstrating how to use the CloudHSM JCE
MIT No Attribution
37 stars 57 forks source link

Issue with generateECKeyPairWithParams and generateRSAKeyPairWithParams #23

Closed Prabhanshu1986 closed 5 years ago

Prabhanshu1986 commented 5 years ago

java.lang.NoClassDefFoundError: Could not initialize class com.cavium.key.CaviumRSAPrivateKey at com.cavium.cfm2.Generator.generateRSAKeyPair(Generator.java:97) ~[cloudhsm-2.0.3.jar!/:na] at com.cavium.key.generator.CaviumRSAKeyPairGenerator.generateKeyPair(CaviumRSAKeyPairGenerator.java:71) ~[cloudhsm-2.0.3.jar!/:na] at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:697) ~[na:1.8.0_212] at com.sabre.awshsmconnector.AsymmetricKeys.generateRSAKeyPairWithParams(AsymmetricKeys.java:93) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.AsymmetricKeys.generateRSAKeyPair(AsymmetricKeys.java:82) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.RSAOperationsRunner.encryptRSA(RSAOperationsRunner.java:147) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.LoginHSM.loginHSMEncryptData(LoginHSM.java:92) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.AwsController.encryptedResponse(AwsController.java:17) ~[classes!/:0.0.1-SNAPSHOT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_212] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) ~[spring-web-5.1.6.RELEASE.jar!/:5.1.6.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.6.RELEASE.jar!/:5.1.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.1.6.RELEASE.jar!/:5.1.6.RELE


java.lang.NoClassDefFoundError: Could not initialize class com.cavium.key.generator.CaviumECKeyPairGenerator at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_212] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_212] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_212] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_212] at java.security.Provider$Service.newInstance(Provider.java:1595) ~[na:1.8.0_212] at sun.security.jca.GetInstance.getInstance(GetInstance.java:236) ~[na:1.8.0_212] at sun.security.jca.GetInstance.getInstance(GetInstance.java:206) ~[na:1.8.0_212] at java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:279) ~[na:1.8.0_212] at com.sabre.awshsmconnector.AsymmetricKeys.generateECKeyPairWithParams(AsymmetricKeys.java:55) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.AsymmetricKeys.generateECKeyPair(AsymmetricKeys.java:49) ~[classes!/:0.0.1-SNAPSHOT]

rday commented 5 years ago

I was able to run the key utility import test with the 2.0.3 release. Do you have a build example that is failing? Is the jar file available at runtime?

Prabhanshu1986 commented 5 years ago

I am getting this with key utilities runner java.lang.NoClassDefFoundError: Could not initialize class com.cavium.key.CaviumECPrivateKey at com.sabre.awshsmconnector.KeyUtilitiesRunner.getKeyByHandle(KeyUtilitiesRunner.java:241) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.KeyUtilitiesRunner.keyUtility(KeyUtilitiesRunner.java:185) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.LoginHSM.loginHSMEncryptData(LoginHSM.java:98) ~[classes!/:0.0.1-SNAPSHOT] at com.sabre.awshsmconnector.AwsController.encryptedResponse(AwsController.java:17) ~[classes!/:0.0.1-SNAPSHOT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_212] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) ~[spring-web-5.1.6.RELEASE.jar!/:5.1.6.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.6.RELEASE.jar!/:5.1.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.

rday commented 5 years ago

Can you build and run the sample using Maven? If we can eliminate the sabre classes, then I can try to reproduce locally.

Prabhanshu1986 commented 5 years ago

Login HSM is successful Only ECBEncryptDecryptRunner is working for me i.e generating an AES key and encrypting.

I think when it comes to new Cavium.. classes it is failing

Prabhanshu1986 commented 5 years ago

I mean when it tries to create instances of Cavium variants

Prabhanshu1986 commented 5 years ago

snapshot of POM. I copied cloudhasm2.0.3 jar to the highlighted C:/ location and also to my maven repository

com.cavium cloudhsm 2.0.3 org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-install-plugin 2.5.1 install-log4j-core install-file validate org.apache.logging.log4j-core log4j-core 2.8 jar C:/aws_hsm_jars/log4j-core-2.8.jar true install-log4j-api install-file validate org.apache.logging.log4j-api log4j-api 2.8 jar C:/aws_hsm_jars/log4j-api-2.8.jar true install-cloudhsm-jce install-file validate com.cavium cloudhsm 2.0.3 jar C:/aws_hsm_jars/cloudhsm-2.0.3.jar true
Prabhanshu1986 commented 5 years ago

All above errors were due to below exception.

java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLogger cannot be cast to org.apache.logging.log4j.core.Logger.

The issue can be closed now. Thanks for your help.