我遇到了一个生成SOAP消息的应用程序的问题,并使用JDK中的XMLSignature类进行了一些签名。
我得到了这个例外:
Caused by: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_HOST_MEMORY
at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:547)
at java.security.Signature$Delegate.engineSign(Signature.java:1160)
at java.security.Signature.sign(Signature.java:553)
at org.jcp.xml.dsig.internal.dom.DOMSignatureMethod.sign(DOMSignatureMethod.java:298)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:397)
at uz.mm.ehealth.client.sts.HolderOfKeySOAPHandler.handleMessage(HolderOfKeySOAPHandler.java:156)
at uz.mm.ehealth.client.sts.HolderOfKeySOAPHandler.handleMessage(HolderOfKeySOAPHandler.java:85)
at com.sun.xml.internal.ws.handler.HandlerProcessor.callHandleMessage(HandlerProcessor.java:282)
at com.sun.xml.internal.ws.handler.HandlerProcessor.callHandlersRequest(HandlerProcessor.java:123)
at com.sun.xml.internal.ws.handler.ClientSOAPHandlerTube.callHandlersOnRequest(ClientSOAPHandlerTube.java:127)
... 31 more
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_HOST_MEMORY
at sun.security.pkcs11.wrapper.PKCS11.C_Sign(Native Method)
at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:538)
... 40 more
但是谷歌搜索这并没有透露任何信息。有谁知道这可能意味着什么或我如何进一步调试?
任何指针都将非常感谢!
答案 0 :(得分:0)
CKR_HOST_MEMORY错误很可能是由您的JRE用作“插件”的PKCS#11库返回的,该插件执行加密操作(在您的情况下创建数字签名)。 PKCS#11库通常由专用加密硬件(如智能卡或HSM)的供应商提供,这些库提供标准化API,其他应用程序可以使用这些API以简单方便的方式访问此类设备。
当您查看PKCS#11 v2.20 specification时,您会发现错误的描述:
CKR_HOST_MEMORY:运行Cryptoki库的计算机 没有足够的内存来执行所请求的功能。
我相信您应该联系您正在使用的PKCS#11库的供应商。他应该能够诊断并解决你的问题。