BCryptVerifySignature 函数 (bcrypt.h)

BCryptVerifySignature 函数验证指定的签名是否与指定的哈希匹配。

语法

NTSTATUS BCryptVerifySignature(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbHash,
  [in]           ULONG             cbHash,
  [in]           PUCHAR            pbSignature,
  [in]           ULONG             cbSignature,
  [in]           ULONG             dwFlags
);

参数

[in] hKey

用于解密签名的密钥句柄。 这必须是相同的密钥或用于使用 BCryptSignHash 函数对数据签名的密钥对的公钥部分。

[in, optional] pPaddingInfo

指向包含填充信息的结构的指针。 此参数指向的结构的实际类型取决于 dwFlags 参数的值。 此参数仅与非对称密钥一起使用,否则必须为 NULL

[in] pbHash

包含数据哈希的缓冲区的地址。 cbHash 参数包含此缓冲区的大小。

[in] cbHash

pbHash 缓冲区的大小(以字节为单位)。

[in] pbSignature

包含数据的带符号哈希的缓冲区的地址。 BCryptSignHash 函数用于创建签名。 cbSignature 参数包含此缓冲区的大小。

[in] cbSignature

pbSignature 缓冲区的大小(以字节为单位)。 BCryptSignHash 函数用于创建签名。

[in] dwFlags

一组标志,用于修改此函数的行为。 允许的标志集取决于 hKey 参数指定的键类型。

如果密钥是对称密钥,则不使用此参数,应为零。

如果键是非对称密钥,则此值可以是以下值之一。

含义
BCRYPT_PAD_PKCS1
创建签名时使用了 PKCS1 填充方案。 pPaddingInfo 参数是指向BCRYPT_PKCS1_PADDING_INFO结构的指针。
BCRYPT_PAD_PSS
创建签名时使用了概率签名方案 (PSS) 填充方案。 pPaddingInfo 参数是指向BCRYPT_PSS_PADDING_INFO结构的指针。

返回值

返回指示函数成功或失败的状态代码。

可能的返回代码包括但不限于以下内容。

返回代码 说明
STATUS_SUCCESS
函数成功。
STATUS_INVALID_SIGNATURE
签名未验证。
NTE_NO_MEMORY
内存分配失败。
STATUS_INVALID_PARAMETER
提供的某个参数无效。
STATUS_INVALID_HANDLE
由 hKey 参数指定的密钥句柄无效。
STATUS_NOT_SUPPORTED
用于创建 由 hKey 参数指定的密钥句柄的算法提供程序不是签名算法。

注解

此函数使用提供的密钥计算签名,然后将计算的签名值与指定的签名值进行比较。

若要使用此函数,必须使用用于创建已签名哈希值的相同哈希算法对数据进行哈希处理。 如果适用,还必须指定创建签名时指定的相同填充方案。

根据提供程序支持的处理器模式,可以从用户模式或内核模式调用 BCryptVerifySignature 。 内核模式调用方可以在 PASSIVE_LEVELIRQLDISPATCH_LEVEL IRQL 执行。 如果当前 IRQL 级别 DISPATCH_LEVEL,则 hKey 参数中提供的句柄必须派生自使用 BCRYPT_PROV_DISPATCH 标志打开的提供程序返回的算法句柄,并且传递给 BCryptVerifySignature 函数的任何指针都必须引用非分页 (或锁定) 内存。

若要在内核模式下调用此函数,请使用 Cng.lib,它是驱动程序开发工具包 (DDK) 的一部分。 Windows Server 2008 和 Windows Vista: 若要在内核模式下调用此函数,请使用 Ksecdd.lib。

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 bcrypt.h
Library Bcrypt.lib
DLL Bcrypt.dll

另请参阅

BCryptSignHash