Документ XML для подписи Java с использованием JSR 105 с закрытым ключом HSM

Мне нужно подписать XML-документ, используя API-интерфейс JSR 105. Я уже разобрался, как это сделать с помощью стандартного провайдера, но теперь мне нужен мой код для поддержки 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

Я немного погуглил и обнаружил, что провайдер, используемый в подписи XML, должен иметь расширение JSR 105, но SunPkcs11, похоже, его не имеет. Если бы он был, он бы работал.

Кто-нибудь знает, как решить эту ситуацию, используя код с открытым исходным кодом или Java / Oracle?

Спасибо джозеф

0 ответов

Другие вопросы по тегам