Как указать / получить доступ к функции CertCreateCertificateContext файла сертификата? (WinCrypt API)
Немного новичок в программировании Windows /C++. Я пытаюсь установить файл корневого сертификата.p7b в хранилище доверенных корневых сертификатов. Я хочу использовать библиотеку Windows Wincrypt. В частности, это рекомендуемые шаги, которые я получил на старом форуме:
- Вызов
CertCreateCertificateContext
используя байты содержимого вашего сертификата, чтобы получитьPCCERT_CONTEXT
- Вызов
CertOpenSystemStore
сszSubsystemProtocol
установите "ROOT", чтобы получитьHCERTSTORE
- Вызов
CertAddCertificateContextToStore
используя вышеуказанноеHCERTSTORE
а такжеPCCERT_CONTEXT
.
[Вот] документация по API для CertCreateCertificateContext. Не знаю, как просто указатьpbCertEncoded
в мой фактический файл сертификата. Мне просто указать им путь? Должен ли я загружать сертификат? Какой должен быть тип?
1 ответ
Из ответа Саймона Розмана в этом посте: Мы должны использоватьCertOpenStore()
вместо тогоCertCreateCertificateContext()
, который поддерживает только один сертификат, тогда как файл PKCS #7 может содержать несколько.
После открытия хранилища сертификатов вы можете использовать CertEnumCertificatesInStore()
для получения контекста сертификата отдельных сертификатов из магазина.
Итак, из моих первоначальных шагов по успешной установке p7b в корневое хранилище:
Вызов
CertOpenStore()
для корневого хранилища и для самого сертификата. Это даст вам дваHCERTSTORE
ручки.Создайте цикл while, который добавит контексты сертификатов в открытое корневое хранилище (используя
CertAddCertificateContextToStore()
), пока существует контекст сертификата (проверьте, используяCertEnumCertificatesInStore()
в открытом хранилище сертификатов).