Функция CryptFindCertificateKeyProvInfo (wincrypt.h)

Функция CryptFindCertificateKeyProvInfo перечисляет поставщиков шифрования и их контейнеры, чтобы найти закрытый ключ , соответствующий открытому ключу сертификата.

Синтаксис

BOOL CryptFindCertificateKeyProvInfo(
  [in] PCCERT_CONTEXT pCert,
  [in] DWORD          dwFlags,
  [in] void           *pvReserved
);

Параметры

[in] pCert

Указатель на CERT_CONTEXT структуру сертификата для использования при экспорте сведений об открытом ключе.

[in] dwFlags

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

Значение Значение
CRYPT_FIND_USER_KEYSET_FLAG
Ограничивает поиск контейнером пользователя. По умолчанию выполняется поиск в контейнерах пользователей и компьютеров.
CRYPT_FIND_MACHINE_KEYSET_FLAG
Ограничивает поиск контейнером компьютера. По умолчанию выполняется поиск в контейнерах пользователей и компьютеров.
CRYPT_FIND_SILENT_KEYSET_FLAG
Приложение запрашивает, чтобы CSP не отображал пользовательский интерфейс для этого контекста. Если поставщик служб конфигурации должен отображать пользовательский интерфейс для работы, вызов завершается ошибкой и код ошибки NTE_SILENT_CONTEXT устанавливается как последняя ошибка.
 

Следующие флаги определяют, какая технология используется для получения ключа. Если ни один из этих флагов отсутствует, эта функция попытается получить ключ только с помощью CryptoAPI.

Windows Server 2003 и Windows XP: Эти флаги не поддерживаются.

Значение Значение
CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG
Эта функция попытается получить ключ с помощью CryptoAPI. В случае сбоя эта функция попытается получить ключ с помощью API шифрования следующего поколения (CNG).

Свойство CERT_KEY_PROV_INFO_PROP_ID сертификата равно нулю, если для получения ключа используется CNG.

CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG
Эта функция попытается получить ключ только с помощью CNG и не будет использовать CryptoAPI для получения ключа.

Свойство CERT_KEY_PROV_INFO_PROP_ID сертификата равно нулю, если для получения ключа используется CNG.

CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG
Эта функция попытается получить ключ с помощью CNG. В случае сбоя эта функция попытается получить ключ с помощью CryptoAPI.

Свойство CERT_KEY_PROV_INFO_PROP_ID сертификата равно нулю, если для получения ключа используется CNG.

[in] pvReserved

Зарезервировано для использования в будущем и должно иметь значение NULL.

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

ЗНАЧЕНИЕ TRUE , если функция находит закрытый ключ, соответствующий открытому ключу сертификата в искомом контейнере; False , если функции не удается найти контейнер или закрытый ключ в контейнере.

GetLastError возвращает следующую ошибку:

Код возврата Описание
NTE_NO_KEY
Контейнер не найден.

Комментарии

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

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

Функции Управление данными