CertAddEncodedCertificateToStore 函数 (wincrypt.h)

CertAddEncodedCertificateToStore 函数从编码的证书创建证书上下文,并将其添加到证书存储。 创建的上下文不包括任何扩展属性。

在将证书添加到存储之前 ,CertAddEncodedCertificateToStore 函数还会创建编码证书的副本。

语法

BOOL CertAddEncodedCertificateToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            DWORD          dwCertEncodingType,
  [in]            const BYTE     *pbCertEncoded,
  [in]            DWORD          cbCertEncoded,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppCertContext
);

参数

[in] hCertStore

证书存储的句柄。

[in] dwCertEncodingType

指定使用的编码类型。 始终可以通过将证书和 消息编码类型 与按位 OR 操作结合使用来指定它们,如以下示例所示:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING当前定义的编码类型为:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCertEncoded

指向包含要添加到证书存储的编码证书的缓冲区的指针。

[in] cbCertEncoded

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

[in] dwAddDisposition

指定在存储中存在匹配证书或指向匹配证书的链接时要执行的操作。 当前定义的处置值及其用途如下所示。

含义
CERT_STORE_ADD_ALWAYS
函数不会对现有匹配证书或指向匹配证书的链接检查。 始终将新证书添加到存储中。 这可能会导致存储中出现重复项。
CERT_STORE_ADD_NEW
如果存储中存在匹配的证书或指向匹配证书的链接,则操作将失败。 GetLastError 返回CRYPT_E_EXISTS代码。
CERT_STORE_ADD_REPLACE_EXISTING
如果存储中存在匹配的证书或指向匹配证书的链接,则会删除现有证书或链接,并创建一个新证书并将其添加到存储中。 如果不存在匹配的证书或指向匹配证书的链接,则会创建一个新证书并将其添加到存储中。
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
如果存储中存在匹配的证书,则会在创建新上下文并添加新上下文之前删除该现有上下文。 新上下文从现有证书继承属性。
CERT_STORE_ADD_USE_EXISTING
如果存在匹配的证书或指向匹配证书的链接,则使用现有证书或链接,并添加新证书中的属性。 函数不会失败,但它不会添加新上下文。 如果 ppCertContext 不为 NULL,则现有上下文将重复。

如果匹配的证书或指向匹配证书的链接不存在,则会添加新证书。

[out, optional] ppCertContext

指向已解码 证书上下文的指针的指针。 这是一个可以为 NULL 的可选参数,表示调用应用程序不需要新证书或现有证书的副本。 创建副本时,必须使用 CertFreeCertificateContext 释放其上下文。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE。 有关扩展的错误信息,请调用 GetLastError。 一些可能的错误代码随之而来。

返回代码 说明
CRYPT_E_EXISTS
如果设置了CERT_STORE_ADD_NEW并且存储中已存在证书,或者如果设置了CERT_STORE_ADD_NEWER并且存储区中有一个证书的 NotBefore 日期大于或等于要添加的证书上的 NotBefore 日期,则返回此代码。
E_INVALIDARG
在 dwAddDisposition 参数中指定了无效的处置值,或者指定了无效的证书编码类型。 目前,仅支持X509_ASN_ENCODING类型。
 

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

要求

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

另请参阅

CertAddCertificateContextToStore

CertFreeCertificateContext

证书函数