Поделиться через


enrollNestedCMC

Пример enrollNestedCMC считывает существующий запрос сертификата CMC из файла, заключает его в другой запрос CMC, подписывает этот внешний запрос, отправляет его в центр сертификации (ЦС) и сохраняет ответ сертификата из ЦС в файл.

Расположение

При установке пакета SDK microsoft Windows пример по умолчанию устанавливается в папку %ProgramFiles%\Microsoft SDK\Windows\v7.0\Samples\X509 Certificate Enrollment\VC\enrollNestedCMC.

Обсуждение

Пример enrollNestedCMC:

  1. Обрабатывает следующие аргументы командной строки:
    • Имя входного файла.
    • Имя выходного файла.
    • Необязательный шаблон запроса.
  2. Считывает существующий запрос CMC из файла в виде массива байтов в кодировке Base63, преобразует массив байтов в BSTR, создает объект IX509CertificateRequestCmc и использует BSTR для инициализации объекта запроса. Инициализированный объект становится внутренним запросом.
  3. Использует объект внутреннего запроса, созданный и инициализированный на предыдущем шаге, для инициализации другого запроса CMC.
  4. Извлекает существующий сертификат подписи или, если его не удается найти, создает запрос на сертификат из шаблона, указанного в командной строке, и пытается зарегистрировать его. Функции findCertByTemplate и enrollCertByTemplate определены в файле enrollCommon.cpp.
  5. Извлекает коллекцию ISignerCertificates из внешнего запроса CMC, создает новый объект ISignerCertificate , инициализирует его с помощью полученного сертификата подписи и добавляет его в коллекцию.
  6. Кодирует запрос CMC с помощью Distinguished Encoding Rules (DER) и извлекает запрос в виде BSTR.
  7. Создает объект ICertConfig и использует его для получения строки, содержащей конфигурацию ЦС.
  8. Создает объект ICertRequest2 CryptoAPI и использует его, а также строки, содержащие конфигурацию ЦС и запрос сертификата для отправки запроса в ЦС.
  9. Проверяет состояние процесса регистрации и сохраняет ответ сертификата из ЦС в файл. Функция EncodeToFileW определена в файле enrollCommon.cpp.

Запрос CMC

Использование включенных примеров