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。 以下是一些可能的錯誤碼。

傳回碼 Description
CRYPT_E_EXISTS
如果已設定CERT_STORE_ADD_NEW且憑證已存在於存放區中,或已設定CERT_STORE_ADD_NEWER,且存放區中有大於或等於要新增之憑證上的 NotBefore 日期,則會傳回此程序代碼。
E_INVALIDARG
在 dwAddDisposition 參數中指定無效的處置值,或指定無效的憑證編碼類型。 目前僅支援X509_ASN_ENCODING類型。
 

如果函式失敗, GetLastError 會傳回 抽象語法表示法一 (ASN.1) 編碼/譯碼錯誤。 如需這些錯誤的相關信息,請參閱 ASN.1 編碼/譯碼傳回值

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CertAddCertificateContextToStore

CertFreeCertificateContext

憑證函數