Как использовать Microsoft Crypto API с USB-ключом, следуя PKCS#11
У меня есть USB-токен аутентификации safenet, который был предоставлен компанией, и они сказали мне, что у них есть цифровой сертификат открытого ключа внутри. Они дали мне пароль и программное обеспечение, с помощью которого я вижу, что он может обнаружить сертификат внутри. Теперь мне нужно получить доступ к сертификату этого токена, а затем мне нужно использовать подпись, шифрование и дешифрование, используя мой код разработки. Но компания не дала мне никаких SDK, поэтому я должен сделать все с помощью C++ Microsoft CryptoAPI. Я искал в Google, но я не уверен, что я в правильном направлении
этот код не дает мне правильную ручку для хранимого сертификата USB
// Attempt to acquire a handle to the default key container.
bResult = CryptAcquireContext(
&hProv, // Variable to hold returned handle.
NULL, // Use default key container.
MS_DEF_PROV, // Use default CSP.
PROV_RSA_FULL, // Type of provider to acquire.
0);
я думал, что он должен дать любой сертификат по умолчанию подключен либо на смарт-карте или токене. Я также пытался использовать MS_SCARD_PROV, если он даст мне доступ через USB-токен, но похоже, что он только для смарт-карты, а не для токена.
Я отчаянно пытаюсь выполнить эту задачу, пожалуйста, проведите меня или покажите мне правильный учебник, если вы, эксперты, знаете что-либо. Или предложите мне, что нужно сделать для такого рода задач..
1 ответ
Вы будете использовать функции как PKCS#11, так и CryptoAPI.
PKCS#11 будет в основном использоваться для связи с аппаратным токеном. Каждый производитель оборудования внедрил бы интерфейс PKCS#11 для своего аппаратного токена. Если ваш etoken, то у safenet есть один. Также у safenet будет CSP CryptoAPI, который вы можете использовать для общения с токеном.
CryptoAPI предоставляет богатые функциональные возможности для обработки сертификатов, присутствующих в токене.