Freigeben über


CertAddCertificateContextToStore-Funktion (wincrypt.h)

Die CertAddCertificateContextToStore-Funktion fügt dem Zertifikatspeicher einen Zertifikatkontext hinzu.

Syntax

BOOL CertAddCertificateContextToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            PCCERT_CONTEXT pCertContext,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppStoreContext
);

Parameter

[in] hCertStore

Handle eines Zertifikatspeichers.

[in] pCertContext

Ein Zeiger auf die CERT_CONTEXT Struktur, die dem Speicher hinzugefügt werden soll.

[in] dwAddDisposition

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

Wert Bedeutung
CERT_STORE_ADD_ALWAYS
Die Funktion überprüft weder ein vorhandenes übereinstimmende Zertifikat noch einen Link zu einem übereinstimmenden Zertifikat. Dem Speicher wird immer ein neues Zertifikat hinzugefügt. Dies kann zu Duplikaten in einem Store führen.
CERT_STORE_ADD_NEW
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, schlägt der Vorgang fehl. GetLastError gibt den CRYPT_E_EXISTS-Code zurück.
CERT_STORE_ADD_NEWER
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist und die NotBefore-Zeit des vorhandenen Kontexts gleich oder größer ist als die NotBefore-Zeit des hinzugefügten neuen Kontexts, schlägt der Vorgang fehl, und GetLastError gibt den CRYPT_E_EXISTS Code zurück.

Wenn die NotBefore-Zeit des vorhandenen Kontexts kleiner als die NotBefore-Zeit des hinzugefügten neuen Kontexts 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 neuer Link hinzugefügt.

Wenn Zertifikatsperrlisten (Certificate Revocation Lists , CRLs) oder Certificate Trust List (CTLs) verglichen werden, wird die ThisUpdate-Zeit verwendet.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
Wenn ein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist und die NotBefore-Zeit des vorhandenen Kontexts gleich oder größer ist als die NotBefore-Zeit des hinzugefügten neuen Kontexts, schlägt der Vorgang fehl, und GetLastError gibt den CRYPT_E_EXISTS Code zurück.

Wenn die NotBefore-Zeit des vorhandenen Kontexts kleiner ist als die NotBefore-Zeit des hinzugefügten neuen Kontexts, wird der vorhandene Kontext vor dem Erstellen und Hinzufügen des neuen Kontexts gelöscht. Der neue hinzugefügte Kontext erbt Eigenschaften vom vorhandenen Zertifikat.

Wenn CRLs oder CTLs verglichen werden, wird die ThisUpdate-Zeit verwendet.

CERT_STORE_ADD_REPLACE_EXISTING
Wenn ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird das vorhandene Zertifikat oder der 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 neuer Link hinzugefügt.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Wenn im Speicher ein übereinstimmende Zertifikat vorhanden ist, wird der vorhandene Kontext nicht ersetzt. Der vorhandene Kontext erbt Eigenschaften vom neuen 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 pCertContext nicht NULL ist, wird der vorhandene Kontext dupliziert.

Wenn kein übereinstimmende Zertifikat oder ein Link zu einem übereinstimmenden Zertifikat vorhanden ist, wird ein neues Zertifikat hinzugefügt.

[out, optional] ppStoreContext

Ein Zeiger auf einen Zeiger auf die Kopie des Zertifikats, das dem Speicher hinzugefügt wurde.

Der ppStoreContext-Parameter kann NULL sein, was angibt, dass die aufrufende Anwendung keine Kopie des hinzugefügten Zertifikats erfordert. Wenn eine Kopie erstellt wird, muss sie 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 Wert 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 ein Zertifikat im Speicher mit einem NotBefore-Datum vorhanden ist, das größer oder gleich dem NotBefore-Datum für das hinzuzufügende Zertifikat ist.
E_INVALIDARG
Im dwAddDisposition-Parameter wurde ein ungültiger Dispositionswert angegeben.
 

Fehler aus den aufgerufenen Funktionen CertAddEncodedCertificateToStore und CertSetCertificateContextProperty können an diese Funktion weitergegeben werden.

Hinweise

Der Zertifikatkontext wird nicht mit CertDuplicateCertificateContext dupliziert. Stattdessen erstellt die Funktion eine neue Kopie des Kontexts und fügt sie dem Speicher hinzu.

Zusätzlich zum codierten Zertifikat kopiert CertDuplicateCertificateContext auch die Eigenschaften des Kontexts, mit Ausnahme der Eigenschaften CERT_KEY_PROV_HANDLE_PROP_ID und CERT_KEY_CONTEXT_PROP_ID.

Um den Zertifikatkontext aus dem Zertifikatspeicher zu entfernen, verwenden Sie die CertDeleteCertificateFromStore-Funktion .

Hinweis Die Reihenfolge des Zertifikatkontexts kann im Speicher nicht beibehalten werden. Um auf ein bestimmtes Zertifikat zuzugreifen, müssen Sie die Zertifikate im Speicher durchlaufen.
 

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

CertAddEncodedCertificateToStore

CertSetCertificateContextProperty

Zertifikatfunktionen