[New - Windows NT]
[New - Windows 95, OEM Service Release 2]
在理论上,CryptSetHashParam功能允许应用程序自定义散列对象的操作。目前,该函数只定义了一个参数。
BOOL CRYPTFUNC CryptSetHashParam(
HCRYPTHASH【马】, | |
DWORD【dwParam】, | |
BYTE *【pbData】, | |
DWORD【dwFlags中】 | |
); |
参数
【马】
[in]要设置参数的哈希对象的句柄。
【dwParam】
[in]参数号。有关参数的列表,请参阅“备注”部分。
【pbData】
[in]参数数据缓冲区。在调用CryptSetHashParam之前将参数数据放在此缓冲区中。此数据的形式将根据参数编号而有所不同。
【dwFlags中】
[in]标志值。此参数保留供将来使用,并且应始终为零。
备注
可以将【dwParam】参数设置为以下值之一:
HP_HASHVAL
哈希值。【pbData】缓冲区应包含一个字节数组,其中包含一个哈希值直接放入哈希对象。在设置此参数之前,应通过使用CryptGetHashParam功能读取HP_HASHSIZE参数来确定散列值的大小。
普通应用程序不应设置此参数。事实上,一些CSP可能甚至不支持这种能力。不过有时候,很方便的对其他地方生成的哈希值进行签名。这是通常的操作顺序:
应用程序使用CryptCreateHash创建一个哈希对象。
2.通过设置HP_HASHVAL参数来指定哈希值。
3.使用CryptSignHash签名哈希值,获取数字签名块。
因为散列数据和签名之间的绑定相当脆弱,所以在这种情况下不能将任何描述字符串传递给CryptSignHash.
使用CryptDestroyHash破坏哈希对象。
请注意,一些CSP类型可能会添加可以使用此函数设置的其他参数。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要检索扩展错误信息,请使用GetLastError功能。
下表列出了GetLastError功能最常返回的错误代码。由“NTE”开头的错误代码由您使用的特定CSP生成。
错误 | 描述 |
ERROR_INVALID_HANDLE | 其中一个参数指定一个无效句柄。 |
ERROR_BUSY | CSP上下文正在被另一个进程使用。 |
ERROR_INVALID_PARAMETER | 其中一个参数包含无效值。这通常是一个非法的指针。 |
NTE_BAD_FLAGS | 【dwFlags中】参数为非零值,或【pbData】缓冲区包含无效值。 |
NTE_BAD_HASH | 由【马】参数指定的散列对象无效。 |
NTE_BAD_TYPE | 【dwParam】参数指定一个未知参数。 |
NTE_BAD_UID | 创建【的hKeyru-Latn】密钥时指定的CSP上下文无法找到。 |
NTE_FAIL | 该函数以某种意想不到的方式失败。 |
例
该函数以类似于CryptSetKeyParam功能的方式使用。
也可以看看
CryptCreateHash, CryptDestroyHash, CryptGetHashParam, CryptSetKeyParam, CryptSignHash