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 结尾的 Unicode 字符串的指针。
当 dwProvType 成员为零时,此字符串包含 CNG 密钥存储提供程序中的密钥的名称。 此字符串作为 pwszKeyName 参数传递到 NCryptOpenKey 函数。
pwszProvName
指向包含 CSP 名称的以 null 结尾的 Unicode 字符串的指针。
当 dwProvType 成员为零时,此字符串包含 CNG 密钥存储提供程序的名称。 此字符串作为 pwszProviderName 参数传递到 NCryptOpenStorageProvider 函数。
dwProvType
指定 CSP 类型。 这可以是零种,也可以是 加密提供程序类型之一。
如果此成员为零,则密钥容器是 CNG 密钥存储提供程序之一。
dwFlags
一组标志,指示有关提供程序的其他信息。 这可以是零个值,也可以是以下值之一。
加密函数 CryptDecryptMessage、CryptSignMessage、CryptDecryptAndVerifyMessageSignature 和 CryptSignAndEncryptMessage 在内部使用证书中的CRYPT_KEY_PROV_INFO执行 CryptAcquireContext 操作。 设置CERT_SET_KEY_CONTEXT_PROP_ID或CERT_SET_KEY_PROV_HANDLE_PROP_ID标志后,这些加密函数可以使用 CERT_KEY_CONTEXT_PROP_ID 调用 CertSetCertificateContextProperty。 此调用使密钥提供程序的句柄保持打开状态,以便后续调用提到的使用同一证书的加密函数,这样就无需对 CryptAcquireContext 执行其他调用,从而提高效率。 此外,由于某些提供程序可能要求为调用 CryptAcquireContext 输入密码,因此应用程序需要尽量减少进行的 CryptAcquireContext 调用数。 在存储关闭时,会自动释放保持打开状态的密钥提供程序的句柄。
例如,假设电子邮件应用程序收到了五封加密邮件,所有邮件都使用同一证书中的公钥进行加密。 如果在处理第一条消息后密钥提供程序的句柄保持打开状态,则其余四条消息不需要调用 CryptAcquireContext 。
cProvParam
rgProvParam 数组中的元素数。
当 dwProvType 成员为零时,不会使用此成员,并且必须为零。
rgProvParam
包含密钥容器参数 的CRYPT_KEY_PROV_PARAM 结构的数组。 cProvParam 成员包含此数组中的元素数。
当 dwProvType 成员为零时,不会使用此成员,并且必须为 NULL。
dwKeySpec
要检索的私钥的规范。
为默认提供程序定义以下值。
当 dwProvType 成员为零时,此值将作为 dwLegacyKeySpec 参数传递到 NCryptOpenKey 函数。
值 | 含义 |
---|---|
|
用于加密/解密会话密钥的密钥。 |
|
用于创建和验证数字签名的密钥。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | wincrypt.h |