Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод InitializeFromCertificate инициализирует запрос сертификата с помощью существующего сертификата. Сертификат содержится в массиве байтов, закодированном с помощью правил различаемой кодировки (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 должен быть четным числом шестнадцатеричных цифр.
- Пробелы между шестнадцатеричными парами игнорируются.
- Параметр кодирования должен иметь значение XCN_CRYPT_STRING_HEXRAW.
- Параметр Context определяет, выполняются ли поиски локальные или компьютерные хранилища.
- Если требуется закрытый ключ, поиск выполняется только в личных хранилищах и хранилищах запросов.
- Если закрытый ключ не нужен, то в корневом и промежуточном хранилищах ЦС также выполняется поиск.
[in] Encoding
Значение перечисления EncodeType , указывающее тип кодирования, примененный к сертификату в кодировке DER. Значение по умолчанию — XCN_CRYPT_STRING_BASE64.
[in] InheritOptions
Значение перечисления X509RequestInheritOptions , указывающее, как создать объект запроса сертификата из существующего сертификата. Вы можете указать, как наследовать ключ, выбрав одно из следующих значений. Значение по умолчанию — InheritDefault.
Можно также использовать побитовую операцию AND для объединения значения наследования ключей с любым сочетанием следующих значений.
| Ценность | Meaning |
|---|---|
|
Наследует сертификат продления. Указание этого флага задает значение ICertPropertyRenewal . |
|
Наследует шаблон сертификата. |
|
Наследует различающееся имя субъекта. |
|
Наследует соответствующие расширения от сертификата. |
|
Наследует расширение SubjectAlternativeName . |
|
Наследует срок действия. |
Можно также указать Наследование , чтобы предотвратить реализацию любого флага в предыдущей таблице (флаги, не связанные с наследованием ключей). Если указать Наследование, но также указать флаг, не связанный с наследованием ключей, метод возвращает E_INVALIDARG.
Если параметр InheritOptions имеет значение нулю (0) или указать InheritDefault и не указать значение наследования ключей, По умолчанию используется НаследованиеNewSimilarKey .
Если параметр InheritOptions равен нулю (0) или указать InheritDefault и не указать какие-либо значения, не связанные с наследованием ключей, по умолчанию задаются следующие флаги:
- НаследованиеSubjectFlag
- НаследованиеExtensionsFlag
- НаследованиеValidityPeriodFlag
- InheritTemplateFlag (если сертификат содержит расширение шаблона)
- InheritRenewalCertificateFlag (если клиент обновляет сертификат)
Возвращаемое значение
Если функция выполнена успешно, функция возвращает S_OK.
Если функция завершается ошибкой, она возвращает значение HRESULT , указывающее на ошибку. Возможные значения включают, но не ограничиваются ими в следующей таблице. Список распространенных кодов ошибок см. в разделе "Общие значения HRESULT".
| Код возврата | Description |
|---|---|
|
Объект запроса сертификата уже инициализирован. |
Замечания
Метод InitializeFromCertificate проверяет параметры, указанные в параметре InheritOptions , и инициализирует новый объект запроса PKCS #7, выполнив следующие действия:
- Создает объект запроса PKCS #10 из сертификата, контекста регистрации и наследует параметры, указанные во входных данных. Объект PKCS #10 наследует:
- Шаблон, если он существует в исходном сертификате, и вы задаете значение InheritTemplateFlag .
- Различающееся имя субъекта при указании InheritSubjectFlag.
- Альтернативное имя субъекта при указании InheritSubjectAltNameFlag.
- Расширения, если указать InheritExtensionsFlag.
- Копирует исходный сертификат, если он должен быть продлен, в свойство RenewCertificate в новом запросе PKCS #10.
- Создает ISignerCertificate из исходного сертификата, если оно должно быть продлено, и задает его в свойстве SignerCertificate .
- Задает запрос PKCS #10 в качестве внутреннего объекта запроса.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows Vista [только классические приложения] |
| минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
| целевая платформа | Виндоус |
| Header | certenroll.h |
| DLL | CertEnroll.dll |