Войдите в систему java, используя KSP / CNG - PullRequest
0 голосов
/ 28 января 2020

Как подписать данные с помощью Windows KeyStore?

Если в Windows KeyStore хранится ключ, с помощью KeyStore keyStore = KeyStore.getInstance("Windows-MY"); я могу получить доступ к Windows KeyStore и затем получить ключ ссылка на данный псевдоним. Или я могу использовать отражение на объекте keyStoreSpi, чтобы получить доступ к его записям, объектам X509Certificate и объектам PrivateKey и использовать его для подписи некоторых данных. Этот метод просто позволяет получить ссылку на ключ и затем использовать ее при подписании.

За сертификатами в Windows KeyStore находятся провайдеры хранения ключей (KSP). Я использую провайдер хранилища пользовательских ключей (не мной созданный, не знаю, как он работает, что он делает или нет).

Теперь можно подписать ключ, ссылка на сертификат указана в Windows хранилище ключей, но что предоставляется Windows хранилище ключей через KSP? (сам ключ хранится в HSM)

EDIT: исправлена ​​терминология, чтобы текст имел смысл.

1 Ответ

0 голосов
/ 30 января 2020

Хорошо, я обнаружил, что провайдер Java SunMSCAPI в Java 8 (о котором я не упомянул в вопросе ...) не поддерживает KSP (также известный как CNG и CAPI2 ). Он поддерживает только Crypto API (CAPI). Ключ, который я хочу подписать, предоставляется поставщиком СПГ. Поэтому он не поддерживается в Java 8, но должен поддерживаться Java 13 (https://bugs.openjdk.java.net/browse/JDK-8026953)

...