структура CRYPT_KEY_PROV_INFO (wincrypt.h)

Структура CRYPT_KEY_PROV_INFO содержит сведения о контейнере ключей в поставщике служб шифрования (CSP).

Синтаксис

typedef struct _CRYPT_KEY_PROV_INFO {
  LPWSTR                pwszContainerName;
  LPWSTR                pwszProvName;
  DWORD                 dwProvType;
  DWORD                 dwFlags;
  DWORD                 cProvParam;
  PCRYPT_KEY_PROV_PARAM rgProvParam;
  DWORD                 dwKeySpec;
} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;

Члены

pwszContainerName

Указатель на строку Юникода, завершающуюся null, которая содержит имя контейнера ключей.

Если член dwProvType равен нулю, эта строка содержит имя ключа в поставщике хранилища ключей CNG. Эта строка передается в качестве параметра pwszKeyName в функцию NCryptOpenKey .

pwszProvName

Указатель на строку Юникода, завершающуюся null, которая содержит имя CSP.

Если член dwProvType равен нулю, эта строка содержит имя поставщика хранилища ключей CNG. Эта строка передается в качестве параметра pwszProviderName в функцию NCryptOpenStorageProvider .

dwProvType

Указывает тип CSP. Это может быть ноль или один из типов поставщика служб шифрования.

Если этот член равен нулю, контейнер ключей является одним из поставщиков хранилища ключей CNG.

dwFlags

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

Значение Значение
CERT_SET_KEY_PROV_HANDLE_PROP_ID / CERT_SET_KEY_CONTEXT_PROP_ID
Позволяет сохранить дескриптор поставщика ключей открытым для последующих вызовов криптографических функций.
CRYPT_MACHINE_KEYSET / NCRYPT_MACHINE_KEY_FLAG
Контейнер ключей содержит ключи компьютера. Если этот флаг отсутствует, контейнер ключей содержит ключи пользователя.
CRYPT_SILENT / NCRYPT_SILENT_FLAG
Контейнер ключей попытается открыть все ключи без запросов пользовательского интерфейса.
 

Криптографические функции CryptDecryptMessage, CryptSignMessage, CryptDecryptAndVerifyMessageSignature и CryptSignAndEncryptMessage выполняют внутренние операции CryptAcquireContext с помощью CRYPT_KEY_PROV_INFO из сертификата. Если установлен флаг CERT_SET_KEY_CONTEXT_PROP_ID или CERT_SET_KEY_PROV_HANDLE_PROP_ID , эти криптографические функции могут вызывать CertSetCertificateContextProperty с CERT_KEY_CONTEXT_PROP_ID. Этот вызов позволяет держать дескриптор поставщика ключей открытым для последующих вызовов упомянутых криптографических функций, которые используют тот же сертификат, что устраняет необходимость выполнения дополнительных вызовов CryptAcquireContext, повышая эффективность. Кроме того, поскольку некоторые поставщики могут требовать ввода пароля для вызовов CryptAcquireContext, желательно, чтобы приложения свели к минимуму количество вызовов CryptAcquireContext . Дескриптора для поставщиков ключей, которые были открыты, автоматически освобождаются при закрытии хранилища.

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

cProvParam

Количество элементов в массиве rgProvParam .

Если элемент dwProvType равен нулю, этот элемент не используется и должен быть равен нулю.

rgProvParam

Массив CRYPT_KEY_PROV_PARAM структур, содержащих параметры для контейнера ключей. Элемент cProvParam содержит количество элементов в этом массиве.

Если член dwProvType равен нулю, этот элемент не используется и должен иметь значение NULL.

dwKeySpec

Спецификация извлекаемого закрытого ключа.

Следующие значения определяются для поставщика по умолчанию.

Если член dwProvType равен нулю, это значение передается в качестве параметра dwLegacyKeySpec в функцию NCryptOpenKey .

Значение Значение
AT_KEYEXCHANGE
Ключи, используемые для шифрования и расшифровки ключей сеанса.
AT_SIGNATURE
Ключи, используемые для создания и проверки цифровых подписей.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть wincrypt.h

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

CRYPT_KEY_PROV_PARAM

CertGetCertificateContextProperty

CertSetCertificateContextProperty