Метод IX509CertificateRequestPkcs10::InitializeFromPrivateKey (certenroll.h)

Метод InitializeFromPrivateKey инициализирует запрос сертификата с помощью объекта IX509PrivateKey и при необходимости шаблона. Этот метод поддерживается через Интернет.

Синтаксис

HRESULT InitializeFromPrivateKey(
  [in]           X509CertificateEnrollmentContext Context,
  [in]           IX509PrivateKey                  *pPrivateKey,
  [in, optional] BSTR                             strTemplateName
);

Параметры

[in] Context

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

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

[in] pPrivateKey

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

[in, optional] strTemplateName

Переменная BSTR , содержащая общее имя (CN) шаблона в том виде, в котором он отображается в Active Directory, или идентификатор десятичного объекта с точками. Этот параметр является необязательным.

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

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

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

Код возврата Описание
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
Объект запроса сертификата уже инициализирован.

Комментарии

При указании шаблона метод InitializeFromPrivateKey выполняет следующие действия:

  • Добавляет расширения, заданные шаблоном, в коллекцию 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 Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header certenroll.h
DLL CertEnroll.dll

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

IX509CertificateRequestPkcs10