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

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

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

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

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

1 ответ

Решение

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

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

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