Метод 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.
Возвращаемый код или значение | Описание |
---|---|
|
Объект запроса уже инициализирован. |
Комментарии
Метод 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 |