27.12.2004 9:27:19Устаноовка сертификата программно Ответов: 7
Andrey
Как можно используя CryptoAPI функции установить сертифкат с носителя (дискеты, винта) в системное хранилище.
Желательно поподробнее.
 
Ответы:
27.12.2004 9:53:36Василий
Функции CertAddEncodedCertificateToStore,
CertAddCertificateContextToStore, полный пример см. в исходниках проекта csptest (файлы property.c, makecert.c ) - http://www.cryptopro.ru/CryptoPro/test/sample2_0.zip
28.12.2004 23:00:56Andrey
Пытаюсь добавить сертификат с помощью функции CertAddEncodedCertificateToStore() в итоге получаю ошибку CRYPT_E_ASN1_BADTAG ASN.1: bad tag value met. Что делаю не так или что не доделываю. Я открываю файл читаю в буфер и затем пытаюсь добавить в хранилище, как показано в makecert.c. Подскажите пожалуйста
29.12.2004 2:58:38Andrey
Небольшое уточнение интересует добавление именно сертификата в кодировке BASE64 а не DER. Для der все работает как вы сказали.
29.12.2004 9:59:33Василий
Функции CryptoAPI работают именно с der.
Если нужно, можно перекодировать base64 в der - CryptStringToBinary (правда, она доступна, начиная с ХР или 2003).
29.12.2004 10:50:44Kirill Sobolev
Если есть возможность использовать ATL - то можно воспользоваться функциями Base64Encode/Base64Decode. Так же преобразование Base64<->DER есть в CAPICOM.Utilities
11.01.2005 15:04:09Юрий
Есть такая отличная функция "CertOpenStore" с не менее хорошим параметром CERT_STORE_PROV_FILE...
То есть открываем файл как хранилище, читаем контексты сертификатов из хранилища и записываем их куда надо...
13.01.2005 10:44:33Kirill Sobolev
Тогда уж лучше CERT_STORE_PROV_FILENAME - CERT_STORE_PROV_FILE не работает с PKCS7 и сертификатами, только с сериализованными хранилищами.