CryptSetProvParam 函数 (wincrypt.h)
语法
BOOL CryptSetProvParam(
[in] HCRYPTPROV hProv,
[in] DWORD dwParam,
[in] const BYTE *pbData,
[in] DWORD dwFlags
);
参数
[in] hProv
要为其设置值的 CSP 的句柄。 此句柄必须已使用 CryptAcquireContext 函数创建。
[in] dwParam
指定要设置的参数。 这可以是以下值之一。
值 | 含义 |
---|---|
|
设置提供程序用作其创建的任何对话框的父级的窗口句柄。 pbData 包含指向包含父窗口句柄的 HWND 的指针。
在调用 CryptAcquireContext 之前必须设置此参数,因为许多 CSP 在调用 CryptAcquireContext 时将显示用户界面。 可以为 hProv 参数传递 NULL,以便为随后在此进程中获取的所有加密上下文设置此窗口句柄。 |
|
删除与 哈希、 加密或验证上下文关联的临时密钥。 这将释放内存并清除与密钥关联的注册表设置。 |
|
不使用此常量。 |
|
指定密钥交换 PIN 包含在 pbData 中。 PIN 表示为以 null 结尾的 ASCII 字符串。 |
|
不使用此常量。 |
|
设置密钥存储容器上的 安全描述符 。 pbData 参数是包含密钥存储容器的新安全描述符的SECURITY_DESCRIPTOR结构的地址。 |
|
设置在请求用户 PIN 时向用户显示的备用提示字符串。 pbData 参数是指向以 null 结尾的 Unicode 字符串的指针。 |
|
设置智能卡的根证书存储。 提供程序会将根证书从此存储复制到智能卡。
pbData 参数是一个 HCERTSTORE 变量,其中包含新证书存储的句柄。 在此调用期间,提供程序将从存储中复制证书,因此在调用此函数后,可以安全地关闭此存储。 Windows XP 和 Windows Server 2003: 不支持此参数。 |
|
不使用此常量。 |
|
指定签名 PIN。 pbData 参数是一个以 null 结尾的 ASCII 字符串,表示 PIN。 |
|
不使用此常量。 |
|
对于智能卡提供程序,设置向用户显示的搜索字符串作为插入智能卡的提示。 此字符串作为传递到 SCardUIDlgSelectCard 函数的 OPENCARDNAME_EX 结构的 lpstrSearchDesc 成员传递。 此字符串用于调用进程的生存期。
pbData 参数是指向以 null 结尾的 Unicode 字符串的指针。 |
|
指定 CSP 必须专门使用硬件随机数生成器 (RNG) 。 设置 PP_USE_HARDWARE_RNG 时,随机值仅取自硬件 RNG,不使用其他源。 如果 CSP 支持硬件 RNG 并且可以独占使用,则函数成功并返回 TRUE;否则,函数将失败并返回 FALSE。 使用此值时,pbData 参数必须为 NULL,dwFlags 必须为零。
Microsoft CSP 目前都不支持使用硬件 RNG。 |
|
指定智能卡的用户证书存储。 此证书存储包含存储在智能卡上的所有用户证书。 此存储中的证书使用PKCS_7_ASN_ENCODING或X509_ASN_ENCODING编码进行编码,应包含 CERT_KEY_PROV_INFO_PROP_ID 属性。
pbData 参数是接收内存中证书存储句柄的 HCERTSTORE 变量。 如果不再需要此句柄,调用方必须使用 CertCloseStore 函数将其关闭。 Windows Server 2003 和 Windows XP: 不支持此参数。 |
|
指定 pbData 中包含加密密钥交换 PIN。 pbData 参数包含DATA_BLOB。 |
|
指定 pbData 中包含加密签名 PIN。 pbData 参数包含DATA_BLOB。 |
|
指定智能卡读取器的名称。 pbData 参数是 ANSI 字符数组的地址,该数组包含以 null 结尾的 ANSI 字符串,该字符串包含智能卡读取器的名称。
Windows Server 2003 和 Windows XP: 不支持此参数。 |
|
指定智能卡的标识符。 pbData 参数是包含智能卡标识符的 GUID 结构的地址。
Windows Server 2003 和 Windows XP: 不支持此参数。 |
[in] pbData
指向数据缓冲区的指针,其中包含要设置为提供程序参数的值。 此数据的形式因 dwParam 值而异。 如果 dwParam 包含 PP_USE_HARDWARE_RNG,则此参数必须为 NULL。
[in] dwFlags
如果 dwParam 包含 PP_KEYSET_SEC_DESCR, 则 dwFlags 将包含平台 SDK 中定义的 SECURITY_INFORMATION 适用的位标志。 密钥容器安全性使用 SetFileSecurity 和 GetFileSecurity 进行处理。
这些位标志可以通过使用按位 OR 运算进行组合。 有关详细信息,请参阅 CryptGetProvParam。
如果 dwParam是PP_USE_HARDWARE_RNG 或 PP_DELETEKEY,则必须将 dwFlags 设置为零。
返回值
如果函数成功,则返回值为非零 (TRUE) 。
如果函数失败,则返回值为零, (FALSE) 。 有关扩展的错误信息,请调用 GetLastError。
“NTE”开头的错误代码由使用的特定 CSP 生成。 错误代码包括以下内容。
返回代码 | 说明 |
---|---|
|
CSP 上下文当前正由另一个 进程使用。 |
|
其中一个参数指定无效的句柄。 |
|
其中一个参数包含无效的值。 这通常是无效的指针。 |
|
dwFlags 参数为非零值,或者 pbData 缓冲区包含无效的值。 |
|
dwParam 参数指定未知参数。 |
|
找不到创建 hKey 密钥时指定的 CSP 上下文。 |
|
函数以某种意外方式失败。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Advapi32.lib |
DLL | Advapi32.dll |