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

Метод GetCspStatuses извлекает коллекцию ICspStatuses , содержащую все пары "поставщик-алгоритм", соответствующие предполагаемому использованию закрытого ключа, указанного вызывающим объектом.

Синтаксис

HRESULT GetCspStatuses(
  [in]  X509KeySpec  KeySpec,
  [out] ICspStatuses **ppCspStatuses
);

Параметры

[in] KeySpec

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

Значение Значение
XCN_AT_NONE
Выбраны только API шифрования: поставщики следующего поколения (CNG).
XCN_AT_KEYEXCHANGE
Выбираются только поставщики криптографических служб (CSP) CryptoAPI с алгоритмами шифрования (включая обмен ключами).
XCN_AT_SIGNATURE
Выбираются только CSP CryptoAPI с алгоритмами подписи.

[out] ppCspStatuses

Адрес переменной, получающей указатель на интерфейс ICspStatuses , представляющий коллекцию.

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

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

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

Код возврата Описание
CERTSRV_E_PROPERTY_EMPTY
Не удается найти закрытый ключ.
OLE_E_BLANK
Объект не инициализирован.

Комментарии

Этот метод извлекает коллекцию объектов ICspStatus . Каждый объект представляет одну пару "поставщик-алгоритм". Если вы указываете шаблон при инициализации объекта запроса IX509CertificateRequestPkcs10 , атрибуты шаблона, такие как pKIDefaultCSPs и pKIDefaultKeySpec, влияют на изначально включенные пары. Для получения сведений о паре можно вызвать следующие свойства для каждого объекта ICspStatus :

  • Свойство CspInformation извлекает сведения о поставщике.
  • Свойство CspAlgorithm извлекает сведения об алгоритме.
  • Свойство EnrollmentStatus извлекает объект IX509EnrollmentStatus . Вызовите свойство Selected объекта состояния, чтобы определить, включена ли пара "поставщик-алгоритм" для этого запроса.
  • Свойство Ordinal извлекает позицию в коллекции пар "поставщик-алгоритм".

Коллекция, полученная этим методом, сохраняется внутри объекта запроса. Можно создать и сохранить до трех коллекций, по одной для каждого значения KeySpec . Это делается для сохранения состояния выбора пар "поставщик/алгоритм", чтобы соответствующие страницы свойств могли отображаться точно и быстро несколько раз, а метод Encode может определить, какие поставщики и алгоритмы выбираются при создании закрытого ключа. Если состояние выбора пары поставщик/алгоритм изменено, изменения сохраняются в соответствующей коллекции. Изменения, внесенные в члены одной коллекции, не влияют на члены любой другой коллекции. Коллекции существуют до тех пор, пока продолжает существовать объект PKCS 10.

Предположим, например, что этот метод вызывается с параметром KeySpec , который имеет значение XCN_AT_SIGNATURE и что для инициализации запроса используется шаблон. Следующие операторы будут истинными:

  • Коллекция объектов ICspStatus создается и сохраняется в объекте IX509CertificateRequestPkcs10 . Коллекция содержит все допустимые пары "поставщик-алгоритм", установленные на компьютере.
  • Так как параметру KeySpec не задано значение XCN_AT_NONE, свойство Selected имеет значение SelectedNo для каждой пары api шифрования: поставщик/алгоритм следующего поколения (CNG) в коллекции.
  • Так как параметру KeySpec не задано значение XCN_AT_KEYEXCHANGE, свойство Selected имеет значение SelectedNo для каждой пары CSP/алгоритм CryptoAPI в коллекции, где алгоритм можно использовать для шифрования данных или архивирования ключа.
  • Для каждого поставщика, на который ссылается шаблон или закрытый ключ, но не поддерживается на компьютере, создается и добавляется в коллекцию заполнитель ICspStatus , а свойству Selected присваивается значение SelectedNo.
  • Свойство Selected имеет значение SelectedYes для каждой пары CSP/algorithm CryptoAPI, где алгоритм можно использовать только для подписывания данных.
  • Свойство Ordinal задается так, чтобы оно отражало порядок CSP, если он есть, идентифицируемый атрибутом шаблона pKIDefaultCSPs . Поставщики служб конфигурации, перечисленные в первую очередь по атрибуту , упорядочены сначала в коллекции. Это свойство используется во время регистрации, если необходимо создать закрытый ключ. Первая выбранная пара CSP/алгоритм используется для создания ключа, но в случае сбоя операции выполняется попытка следующей выбранной пары.
  • При повторном вызове этого метода с тем же параметром KeySpec извлекается указатель на существующую коллекцию, созданную ранее для этого значения параметра.
  • Повторное вызов этого метода с другим параметром KeySpec не повлияет на коллекцию, созданную для XCN_AT_SIGNATURE значения KeySpec . Кроме того, изменение свойства Selected для любого члена новой коллекции не влияет на любой элемент предыдущей коллекции.

Метод GetCspStatuses отличается от свойства CspStatuses использованием параметра KeySpec . Метод позволяет пользователям указать это значение, но свойство использует значение, заданное в закрытом ключе, связанном с объектом запроса.

Перед вызовом этого метода необходимо инициализировать объект IX509CertificateRequestPkcs10 . Дополнительные сведения см. в любом из следующих методов:

Требования

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

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

IX509CertificateRequestPkcs10