Подписание XML с использованием оболочек pkcs11 в JAVA

Я написал программу для подписи файла XML с использованием API цифровой подписи, предоставляемого Java (т. Е. Классы из пакета javax.xml.crypto.dsig). Но чтобы подписать XML-документ, необходимо было предоставить закрытый ключ, чтобы создать контекст подписи, прежде чем указывать дайджест, как в приведенном ниже выражении.

DOMSignContext dsc = new DOMSignContext(priv_key, doc.getDocumentElement());

Я хочу подписать xml, когда храню закрытый ключ в безопасном хранилище, таком как HSM. У меня есть классы-оболочки для доступа к HSM в JAVA, поэтому я могу получить дескриптор закрытого ключа, но не знаю, как использовать его для подписи.

Может ли кто-нибудь подсказать мне, как подписать XML таким образом...


person juan    schedule 29.08.2013    source источник


Ответы (1)


Подписание поддерживается поставщиком PKCS#11, поставляемым Oracle. В настоящее время у вас может быть дескриптор стиля C в классе-оболочке, но это не очень полезно. Дескриптор должен находиться в провайдере JCA для использования с классами подписи XML. И поставщик должен быть подписан предоставленным Oracle сертификатом подписи кода.

Чтобы использовать закрытый ключ с поставщиком PKCS#11, убедитесь, что сертификат с тем же идентификатором присутствует в токене PKCS#11. Таким образом, объединенная запись закрытого ключа/сертификата будет отображаться в файле "PKCS11" KeyStore. Вы можете использовать это для подписи XML-данных.

person Maarten Bodewes    schedule 31.08.2013
comment
Я только что дал вам самый ценный трюк выше, но имейте в виду, что может быть еще несколько ловушек, которые нужно преодолеть, прежде чем вы сможете успешно использовать поставщика PKCS # 11. Удачного кодирования... - person Maarten Bodewes; 01.09.2013