Метод IX509CertificateRequestPkcs7::InitializeFromCertificate (certenroll.h)
Метод InitializeFromCertificate инициализирует запрос сертификата, используя существующий сертификат. Сертификат содержится в массиве байтов, закодированном с помощью Distinguished Encoding Rules (DER), как определено в стандарте ASN.1. Массив байтов в кодировке DER представлен строкой, которая является либо чистой двоичной последовательностью, либо кодировкой Юникода.
Синтаксис
HRESULT InitializeFromCertificate(
[in] X509CertificateEnrollmentContext Context,
[in] VARIANT_BOOL RenewalRequest,
[in] BSTR strCertificate,
[in] EncodingType Encoding,
[in] X509RequestInheritOptions InheritOptions
);
Параметры
[in] Context
Значение перечисления X509CertificateEnrollmentContext , указывающее, предназначен ли запрошенный сертификат для конечного пользователя, компьютера или администратора, действующего от имени компьютера.
[in] RenewalRequest
VARIANT_BOOL, указывающий, запрашивает ли конечная сущность продление сертификата, определенного параметром strCertificate.
[in] strCertificate
Переменная BSTR , содержащая сертификат в кодировке DER.
Начиная с Windows 7 и Windows Server 2008 R2, вы можете указать печать или серийный номер сертификата, а не закодированный сертификат. Это приводит к тому, что функция выполняет поиск соответствующего сертификата в соответствующих локальных хранилищах. Помните на следующие моменты.
- BSTR должно быть четным числом шестнадцатеричных цифр.
- Пробелы между шестнадцатеричными парами игнорируются.
- Параметр Encoding должен иметь значение XCN_CRYPT_STRING_HEXRAW.
- Параметр Context определяет, выполняется ли поиск в локальном или компьютерном хранилище или в обоих хранилищах.
- Если требуется закрытый ключ, выполняется поиск только в личных хранилищах и хранилищах запросов.
- Если закрытый ключ не требуется, выполняется поиск в корневом и промежуточном хранилищах ЦС.
[in] Encoding
Значение перечисления EncodingType , указывающее тип кодировки, применяемой к сертификату с кодировкой DER. Значение по умолчанию — XCN_CRYPT_STRING_BASE64.
[in] InheritOptions
Значение перечисления X509RequestInheritOptions , указывающее, как создать объект запроса сертификата из существующего сертификата. Вы можете указать, как наследовать ключ, выбрав одно из следующих значений. Значение по умолчанию — InheritDefault.
Можно также использовать побитовую операцию AND для объединения значения наследования ключа с любым сочетанием следующих значений.
Значение | Значение |
---|---|
|
Наследует сертификат продления. При указании этого флага задается значение ICertPropertyRenewal . |
|
Наследует шаблон сертификата. |
|
Наследует различающееся имя субъекта. |
|
Наследует соответствующие расширения от сертификата. |
|
Наследует расширение SubjectAlternativeName . |
|
Наследует срок действия. |
Можно также указать InheritNone , чтобы запретить реализацию по умолчанию любых флагов в предыдущей таблице (флаги, не связанные с наследованием ключей). Если указать InheritNone, но также указать флаг, не связанный с наследованием ключей, метод возвращает E_INVALIDARG.
Если задать для параметра InheritOptions нулевое значение (0) или указать InheritDefault и не указать значение наследования ключа, по умолчанию используется InheritNewSimilarKey .
Если для параметра InheritOptions задано нулевое значение (0) или указано Значение InheritDefault и не указано ни одно из значений, не связанных с наследованием ключей, по умолчанию устанавливаются следующие флаги:
- InheritSubjectFlag
- InheritExtensionsFlag
- InheritValidityPeriodFlag
- InheritTemplateFlag (если сертификат содержит расширение шаблона)
- InheritRenewalCertificateFlag (если клиент обновляет сертификат)
Возвращаемое значение
Если функция завершается успешно, функция возвращает S_OK.
Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
Код возврата | Описание |
---|---|
|
Объект запроса сертификата уже инициализирован. |
Комментарии
Метод InitializeFromCertificate проверяет параметры, указанные в параметре InheritOptions, и инициализирует новый объект запроса PKCS #7, выполняя следующие действия:
- Создает объект запроса PKCS #10 из сертификата, контекста регистрации и параметров наследования, указанных во входных данных. Объект PKCS #10 наследует:
- Шаблон, если он существует в исходном сертификате, и вы задали значение InheritTemplateFlag .
- Различающееся имя субъекта, если указано InheritSubjectFlag.
- Альтернативное имя субъекта, если указано InheritSubjectAltNameFlag.
- Расширения, если вы указываете InheritExtensionsFlag.
- Копирует исходный сертификат, если он требуется продлить, в свойство RenewCertificate в новом запросе PKCS #10.
- Создает ISignerCertificate из исходного сертификата, если он требуется продлить, и задает его для свойства SignerCertificate .
- Задает запрос PKCS #10 в качестве объекта внутреннего запроса.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | certenroll.h |
DLL | CertEnroll.dll |