使用带有HSM私钥的JSR 105的Java签名XML文档

时间:2015-10-11 13:39:39

标签: java xml-signature jsr hsm

我需要使用JSR 105 api签署XML文档。我已经想过,如何使用标准提供程序来完成它,但现在我需要我的代码来支持HSM。这是问题。

如果我像这样初始化签名:

 XMLSignatureFactory fac;
 fac = XMLSignatureFactory.getInstance("DOM");

如果我使用通过HSM(SunPKCS11提供商)获得的私钥,我会收到 这个例外/错误:

my.exception.InternalServerErrorException: Internal server
error: Create signature problem
Caused by: javax.xml.crypto.dsig.XMLSignatureException: 
java.security.InvalidKeyException: No installed provider supports this key: sun.security.pkcs11.P11Key$P11PrivateKey
at
org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:411) ~[xmlsec-1.5.7.jar:1.5.7]

如果我使用SunPkcs11提供程序初始化签名工厂,则这样:

XMLSignatureFactory fac;
fac = XMLSignatureFactory.getInstance("DOM", provider);

我得到了这个例外:

Caused by: javax.xml.crypto.NoSuchMechanismException: java.security.NoSuchAlgorithmException: no such algorithm: DOM for provider SunPKCS11-SunPKCS11

我google了一下,发现,XML签名中使用的提供程序必须具有JSR 105扩展名,但SunPkcs11似乎没有。如果它有一个,它会工作。

有谁知道,如何使用opensource或Java / Oracle提供的代码解决这种情况?

谢谢Josef

0 个答案:

没有答案