CertAddEncodedCertificateToStore-Funktion (wincrypt.h)

Die CertAddEncodedCertificateToStore-Funktion erstellt einen Zertifikatkontext aus einem codierten Zertifikat und fügt ihn dem Zertifikatspeicher hinzu. Der erstellte Kontext enthält keine erweiterten Eigenschaften.

Die CertAddEncodedCertificateToStore-Funktion erstellt auch eine Kopie des codierten Zertifikats, bevor das Zertifikat dem Speicher hinzugefügt wird.

Syntax

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

Parameter

[in] hCertStore

Ein Handle für den Zertifikatspeicher.

[in] dwCertEncodingType

Gibt den verwendeten Codierungstyp an. Es ist immer akzeptabel, sowohl den Zertifikat- als auch den Nachrichtencodierungstyp anzugeben, indem sie mit einem bitweisen OR-Vorgang kombiniert werden, wie im folgenden Beispiel gezeigt:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING Derzeit definierte Codierungstypen sind:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCertEncoded

Ein Zeiger auf einen Puffer, der das codierte Zertifikat enthält, das dem Zertifikatspeicher hinzugefügt werden soll.

[in] cbCertEncoded

Die Größe des pbCertEncoded-Puffers in Byte .

[in] dwAddDisposition

Gibt die Aktion an, die ausgeführt werden soll, wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat im Speicher vorhanden ist. Derzeit definierte Dispositionswerte und deren Verwendungen sind wie folgt:

Wert Bedeutung
CERT_STORE_ADD_ALWAYS
Die Funktion überprüft kein vorhandenes übereinstimmende Zertifikat oder einen Link zu einem übereinstimmenden Zertifikat. Dem Speicher wird immer ein neues Zertifikat hinzugefügt. Dies kann zu Duplikaten in einem Speicher führen.
CERT_STORE_ADD_NEW
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat im Speicher vorhanden ist, schlägt der Vorgang fehl. GetLastError gibt den CRYPT_E_EXISTS Code zurück.
CERT_STORE_ADD_REPLACE_EXISTING
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat im Speicher vorhanden ist, wird das vorhandene Zertifikat oder der vorhandene Link gelöscht, und ein neues Zertifikat wird erstellt und dem Speicher hinzugefügt. Wenn kein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird ein neues Zertifikat erstellt und dem Speicher hinzugefügt.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Wenn im Speicher ein übereinstimmende Zertifikat vorhanden ist, wird dieser vorhandene Kontext gelöscht, bevor der neue Kontext erstellt und hinzugefügt wird. Der neue Kontext erbt Eigenschaften vom vorhandenen Zertifikat.
CERT_STORE_ADD_USE_EXISTING
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird dieses vorhandene Zertifikat oder link verwendet, und Eigenschaften aus dem neuen Zertifikat werden hinzugefügt. Die Funktion schlägt nicht fehl, fügt aber keinen neuen Kontext hinzu. Wenn ppCertContext nicht NULL ist, wird der vorhandene Kontext dupliziert.

Wenn kein übereinstimmende Zertifikat oder eine Verknüpfung mit einem übereinstimmenden Zertifikat vorhanden ist, wird ein neues Zertifikat hinzugefügt.

[out, optional] ppCertContext

Ein Zeiger auf einen Zeiger auf den Kontext des decodierten Zertifikats. Dies ist ein optionaler Parameter, der NULL sein kann und angibt, dass die aufrufende Anwendung keine Kopie des neuen oder vorhandenen Zertifikats erfordert. Wenn eine Kopie erstellt wird, muss ihr Kontext mithilfe von CertFreeCertificateContext freigegeben werden.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.

Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
CRYPT_E_EXISTS
Dieser Code wird zurückgegeben, wenn CERT_STORE_ADD_NEW festgelegt ist und das Zertifikat bereits im Speicher vorhanden ist, oder wenn CERT_STORE_ADD_NEWER festgelegt ist und im Speicher ein Zertifikat mit einem NotBefore-Datum vorhanden ist, das größer oder gleich dem NotBefore-Datum des hinzuzufügenden Zertifikats ist.
E_INVALIDARG
Im dwAddDisposition-Parameter wurde ein ungültiger Dispositionswert angegeben, oder es wurde ein ungültiger Zertifikatcodierungstyp angegeben. Derzeit wird nur der typ X509_ASN_ENCODING unterstützt.
 

Wenn die Funktion fehlschlägt, gibt GetLastError einen ASN.1-Codierungsfehler ( Abstract Syntax Notation One ) zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1-Rückgabewerte für Codierung/Decodierung.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

CertAddCertificateContextToStore

CertFreeCertificateContext

Zertifikatfunktionen