CryptMsgGetAndVerifySigner 函数 (wincrypt.h)

CryptMsgGetAndVerifySigner 函数验证加密消息的签名。

语法

BOOL CryptMsgGetAndVerifySigner(
  [in]                HCRYPTMSG      hCryptMsg,
  [in]                DWORD          cSignerStore,
  [in, optional]      HCERTSTORE     *rghSignerStore,
  [in]                DWORD          dwFlags,
  [out, optional]     PCCERT_CONTEXT *ppSigner,
  [in, out, optional] DWORD          *pdwSignerIndex
);

参数

[in] hCryptMsg

加密消息的句柄。

[in] cSignerStore

rghSignerStore 数组中的存储数。

[in, optional] rghSignerStore

可搜索签名者证书的证书存储句柄数组。

[in] dwFlags

指示函数的特定用法。

含义
CMSG_TRUSTED_SIGNER_FLAG
假定 rghSignerStore 中的存储受信任,并且它们是唯一搜索以查找与签名者颁发者和序列号对应的证书的存储区。 否则,可以提供签名者存储来补充消息的证书存储。 如果找到签名者证书,则其公钥用于验证消息签名。
CMSG_SIGNER_ONLY_FLAG
返回签名者,但不执行签名验证。
CMSG_USE_SIGNER_INDEX_FLAG
仅返回由 *pdwSignerIndex 指定的签名者。 否则,循环访问所有签名者,直到验证签名或不再有签名者。

[out, optional] ppSigner

如果签名已验证, ppSigner 将更新为指向签名者的 证书上下文。 使用完证书后,通过调用 CertFreeCertificateContext 函数释放上下文。 如果应用程序不需要签名者的证书,则此参数可以为 NULL

[in, out, optional] pdwSignerIndex

如果签名已验证, 则 pdwSigner 将更新为指向签名者数组中签名者的索引。 如果应用程序不需要签名者的索引,此参数可以为 NULL

返回值

如果函数成功,则返回值为非零 (TRUE) 。

如果函数失败,则返回值为零, (FALSE) 。 有关扩展的错误信息,请调用 GetLastError

要求

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

另请参阅

CERT_CONTEXT

CTL_CONTEXT

CryptMsgControl

CryptMsgOpenToDecode

使用 CTL 的验证函数