CryptSetHashParam

【勇芳软件工作室】汉化HomePreviousNext

[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_BUSYCSP上下文正在被另一个进程使用。
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