Метод IX509CertificateRequestPkcs10::GetCspStatuses (certenroll.h)
Метод GetCspStatuses извлекает коллекцию ICspStatuses , содержащую все пары "поставщик-алгоритм", соответствующие предполагаемому использованию закрытого ключа, указанного вызывающим объектом.
Синтаксис
HRESULT GetCspStatuses(
[in] X509KeySpec KeySpec,
[out] ICspStatuses **ppCspStatuses
);
Параметры
[in] KeySpec
Значение перечисления X509KeySpec , указывающее предполагаемое использование ключа. Это может быть одно из следующих значений.
Значение | Значение |
---|---|
|
Выбраны только API шифрования: поставщики следующего поколения (CNG). |
|
Выбираются только поставщики криптографических служб (CSP) CryptoAPI с алгоритмами шифрования (включая обмен ключами). |
|
Выбираются только CSP CryptoAPI с алгоритмами подписи. |
[out] ppCspStatuses
Адрес переменной, получающей указатель на интерфейс ICspStatuses , представляющий коллекцию.
Возвращаемое значение
Если функция выполнена успешно, функция возвращает S_OK.
Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
Код возврата | Описание |
---|---|
|
Не удается найти закрытый ключ. |
|
Объект не инициализирован. |
Комментарии
Этот метод извлекает коллекцию объектов 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 . Дополнительные сведения см. в любом из следующих методов:
- InitializeDecode
- InitializeFromCertificate
- InitializeFromPrivateKey
- InitializeFromPublicKey
- InitializeFromTemplateName
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | certenroll.h |
DLL | CertEnroll.dll |