Метод IX509CertificateRequestPkcs7::InitializeDecode (certenroll.h)

Метод InitializeDecode декодирует существующий подписанный или неподписанный объект запроса PKCS #7 и использует его для инициализации нового объекта PKCS #7. Существующий запрос содержится в массиве байтов, закодированном с помощью Distinguished Encoding Rules (DER) в соответствии со стандартом Абстрактная синтаксическая нотация 1 (ASN.1). Массив байтов представлен строкой, которая является чистой двоичной последовательностью или имеет кодировку Юникод.

Синтаксис

HRESULT InitializeDecode(
  [in] BSTR         strEncodedData,
  [in] EncodingType Encoding
);

Параметры

[in] strEncodedData

Переменная BSTR , содержащая запрос в кодировке DER.

[in] Encoding

Значение перечисления EncodingType , указывающее тип кодировки Юникода, применяемой к входной строке, содержащей запрос в кодировке DER. Значение по умолчанию — XCN_CRYPT_STRING_BASE64.

Возвращаемое значение

Если функция выполнена успешно, функция возвращает S_OK.

Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Возвращаемый код или значение Описание
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
Объект запроса уже инициализирован.

Комментарии

Метод InitializeDecode :

  • Декодирует запрос PKCS #7, указанный во входных данных.
  • Использует декодированные объекты для создания внутреннего запроса PKCS #10 со следующими коллекциями:
    • Пустая коллекция ICryptAttributes .
    • Пустая коллекция IX509Extensions .
    • Пустая коллекция IObjectIds для критически важных расширений.
    • Пустая коллекция IObjectIds для подавления идентификаторов OID атрибутов и расширений в новом запросе.
  • Добавляет декодированные расширения в коллекцию IX509Extensions .
  • Добавляет декодированные атрибуты в коллекцию ICryptAttributes .
  • Задает свойство ClientId .
  • Задает свойство TemplateObjectId .
  • Использует сигнатуру в исходном запросе PKCS #7 для создания нового объекта ISignerCertificate .
  • Извлекает объект IX509SignatureInformation из объекта ISignerCertificate .
  • Инициализирует новый объект IX509SignatureInformation , используя исходные алгоритмы подписи и хэша.
  • Задает запрос PKCS #10 в качестве внутреннего объекта запроса.

По умолчанию метод InitializeDecode предполагает, что запрос на декодирование сертификата предназначен для конечного пользователя. Начиная с Windows 8 и Windows Server 2012 можно изменить это поведение по умолчанию. После создания экземпляра интерфейса IX509CertificateRequestPkcs7 вызовите InitializeDecode , задав для параметра Encodingзначение XCN_CRYPT_STRING_BINARY , а для параметра strEncodedData — одно из следующих значений:

Значение Описание
L"ContextMachine" Закодированный запрос сертификата предназначен для компьютера.
L"ContextUser" Запрос закодированного сертификата предназначен для конечного пользователя.
L"ContextAdministratorForceMachine" Закодированный сертификат запрашивается администратором, действующим от имени компьютера.
 

Затем снова вызовите метод InitializeDecode с закодированным сертификатом, заданным в аргументе strEncodedData .

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header certenroll.h
DLL CertEnroll.dll

См. также раздел

IX509CertificateRequestPkcs7