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


Метод IX509CertificateRequestPkcs10V2::InitializeFromPrivateKeyTemplate (certenroll.h)

Метод InitializeFromPrivateKeyTemplate инициализирует запрос сертификата с помощью объекта IX509PrivateKey и шаблона сертификата.

Синтаксис

HRESULT InitializeFromPrivateKeyTemplate(
  [in] X509CertificateEnrollmentContext Context,
  [in] IX509PrivateKey                  *pPrivateKey,
  [in] IX509EnrollmentPolicyServer      *pPolicyServer,
  [in] IX509CertificateTemplate         *pTemplate
);

Параметры

[in] Context

Значение перечисления X509CertificateEnrollmentContext , указывающее, предназначен ли запрошенный сертификат для конечного пользователя, компьютера или администратора, действующего от имени компьютера. Это может быть одно из следующих значений. Однако если задано свойство MachineContextзакрытого ключа , необходимо указать значение перечисления ContextMachine .

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

[in] pPrivateKey

Указатель на интерфейс IX509PrivateKey , представляющий закрытый ключ.

[in] pPolicyServer

Указатель на объект IX509EnrollmentPolicyServer , представляющий сервер политики регистрации сертификатов (CEP), содержащий шаблон, заданный параметром pTemplate .

[in] pTemplate

Указатель на объект IX509CertificateTemplate , представляющий шаблон, используемый во время инициализации.

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

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

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

Код возврата Описание
E_POINTER
Параметры pPrivateKey, pPolicyServer или pTemplate имеют значение NULL.
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
Объект запроса сертификата уже инициализирован.

Комментарии

Метод InitializeFromPrivateKeyTemplate выполняет следующие действия:

  • Добавляет расширения, заданные шаблоном, в коллекцию IX509Extensions .
  • Создает коллекцию IObjectIds и заполняет ее идентификаторами объектов по умолчанию XCN_OID_KEY_USAGE и XCN_OID_BASIC_CONSTRAINTS2. Если шаблон указывает, что эти идентификаторы OID не являются критическими, они удаляются из коллекции. Добавляются идентификаторы OID, помеченные шаблоном как критические.
  • Задает свойство SmimeCapabilities, если шаблон поддерживает симметричные алгоритмы.
  • Задает свойство AlternateSignatureAlgorithm, если шаблон требует дискретного алгоритма сигнатуры OID.
  • Создает объект IX509SignatureInformation .
  • Создает идентификатор OID хэш-алгоритма, если алгоритм указан в шаблоне, и задает его для объекта IX509SignatureInformation .
  • Извлекает OID асимметричного алгоритма шифрования, если он существует, из шаблона и задает его для объекта IX509SignatureInformation .
  • Заполняет многие свойства IX509PrivateKey из параметров шаблона.

Если свойство CSPInformations не указано, метод создает коллекцию ICspInformations из поставщиков , установленных на компьютере.

На этом этапе закрытый ключ не создается. Если объект IX509PrivateKey , переданный методу, не представляет существующий ключ, ключ создается при вызове метода Encode . Ключ будет создан с помощью поставщика по умолчанию, если шаблон не указан и свойство ProviderName в IX509PrivateKey не задано . Если закрытый ключ существует, он задается в свойстве PrivateKey .

Требования

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

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

IX509CertificateRequestPkcs10V2