CryptGetMessageCertificates 函数 (wincrypt.h)

CryptGetMessageCertificates 函数返回包含消息证书和 CRL 的打开证书存储的句柄。 此函数使用提供程序类型 CERT_STORE_PROV_PKCS7 作为其 lpszStoreProvider 参数调用 CertOpenStore

语法

HCERTSTORE CryptGetMessageCertificates(
  [in] DWORD             dwMsgAndCertEncodingType,
  [in] HCRYPTPROV_LEGACY hCryptProv,
  [in] DWORD             dwFlags,
  [in] const BYTE        *pbSignedBlob,
  [in] DWORD             cbSignedBlob
);

参数

[in] dwMsgAndCertEncodingType

指定使用的编码类型。 始终可以接受将证书和 消息编码类型 与按位 OR 操作组合在一起,如以下示例所示:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

当前定义的编码类型包括:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] hCryptProv

此参数未使用,应设置为 NULL

Windows Server 2003 和 Windows XP: 传递给 CertOpenStore 的 CSP 的句柄。 有关详细信息,请参阅 CertOpenStore。除非有充分的理由在 hCryptProv 中传递特定的加密提供程序,否则传递零会导致获取默认 RSA 或 DSS 提供程序。

此参数的数据类型为 HCRYPTPROV

[in] dwFlags

传递给 CertOpenStore 的标志。 有关详细信息,请参阅 CertOpenStore

[in] pbSignedBlob

指向包含已签名消息的缓冲 CRYPT_INTEGER_BLOB 结构的指针。

[in] cbSignedBlob

已签名消息的大小(以字节为单位)。

返回值

返回包含消息证书和 CRL 的证书 存储 。 对于错误,返回 NULL

下面列出了 GetLastError 函数最常返回的错误代码。

返回代码 说明
E_INVALIDARG
无效的消息和证书编码类型。 目前仅支持PKCS_7_ASN_ENCODING和X509_ASN_ENCODING。
 

如果函数失败, GetLastError 可能会返回 抽象语法表示法 One (ASN.1) 编码/解码错误。 有关这些错误的信息,请参阅 ASN.1 编码/解码返回值

注解

使用 GetLastError 确定任何错误的原因。

示例

有关使用此函数的示例,请参阅 示例 C 程序:设置和获取证书存储属性

要求

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

另请参阅

CryptVerifyMessageSignature

简化的消息函数