CertAddCTLContextToStore-Funktion (wincrypt.h)

Die CertAddCTLContextToStore-Funktion fügt einem Zertifikatspeicher einen CTL-Kontext (Certificate Trust List) hinzu.

Syntax

BOOL CertAddCTLContextToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            PCCTL_CONTEXT pCtlContext,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCTL_CONTEXT *ppStoreContext
);

Parameter

[in] hCertStore

Handle eines Zertifikatspeichers.

[in] pCtlContext

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

[in] dwAddDisposition

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

Wert Bedeutung
CERT_STORE_ADD_ALWAYS
Führt keine Überprüfung auf eine vorhandene übereinstimmende CTL oder einen Link zu einer übereinstimmenden CTL durch. Dem Speicher wird immer eine neue CTL hinzugefügt. Dies kann zu Duplikaten in einem Store führen.
CERT_STORE_ADD_NEW
Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL vorhanden ist, schlägt der Vorgang fehl. GetLastError gibt den CRYPT_E_EXISTS-Code zurück.
CERT_STORE_ADD_NEWER
Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL vorhanden ist, werden die ThisUpdate-Zeiten für die CTLs verglichen. Wenn die vorhandene CTL eine ThisUpdate-Zeit unter der ThisUpdate-Zeit für die neue CTL aufweist, wird die alte CTL oder der alte Link genauso wie durch CERT_STORE_ADD_REPLACE_EXISTING ersetzt. Wenn die vorhandene CTL eine ThisUpdate-Zeit aufweist, die größer als oder gleich der ThisUpdate-Zeit für die hinzuzufügende CTL ist, schlägt die Funktion fehl, da GetLastError den CRYPT_E_EXISTS Code zurückgibt.

Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL nicht im Store gefunden wird, wird dem Speicher eine neue CTL hinzugefügt.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
Die Aktion ist die gleiche wie für CERT_STORE_ADD_NEWER, mit dem Unterschied, dass die Eigenschaften der älteren CTL in die Ersatz-CTL integriert werden, wenn eine ältere CTL ersetzt wird.
CERT_STORE_ADD_REPLACE_EXISTING
Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL vorhanden ist, wird die vorhandene CTL oder der vorhandene Link gelöscht, und eine neue CTL wird erstellt und dem Speicher hinzugefügt. Wenn keine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL vorhanden ist, wird eine hinzugefügt.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Wenn eine übereinstimmende CTL im Speicher vorhanden ist, wird dieser vorhandene Kontext vor dem Erstellen und Hinzufügen des neuen Kontexts gelöscht. Der hinzugefügte Kontext erbt Eigenschaften von der vorhandenen CTL.
CERT_STORE_ADD_USE_EXISTING
Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL vorhanden ist, wird diese vorhandene CTL verwendet, und Eigenschaften aus der neuen CTL werden hinzugefügt. Die Funktion schlägt nicht fehl, aber es wird keine neue CTL hinzugefügt. Wenn ppCertContext nicht NULL ist, wird der vorhandene Kontext dupliziert.

Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL nicht vorhanden ist, wird eine neue CTL hinzugefügt.

[out, optional] ppStoreContext

Zeiger auf einen Zeiger auf den decodierten CTL-Kontext. Dieser optionale Parameter kann NULL sein, der angibt, dass die aufrufende Anwendung keine Kopie der hinzugefügten oder vorhandenen CTL erfordert. Wenn eine Kopie erstellt wird, muss dieser Kontext mithilfe von CertFreeCTLContext freigegeben werden.

Rückgabewert

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

Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE. Fehler aus den aufgerufenen Funktionen CertAddEncodedCRLToStore und CertSetCRLContextProperty können an diese Funktion weitergegeben werden.

Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
CRYPT_E_EXISTS
Dieser Fehler wird zurückgegeben, wenn CERT_STORE_ADD_NEW festgelegt ist und die CTL im Speicher vorhanden ist oder wenn CERT_STORE_ADD_NEWER festgelegt ist und im Speicher eine CTL mit einem ThisUpdate-Datum vorhanden ist, das größer oder gleich dem ThisUpdate-Datum in der hinzuzufügenden CTL ist.
E_INVALIDARG
Eine nicht gültige Add-Disposition wurde vom dwAddDisposition-Parameter angegeben.

Hinweise

Der CTL-Kontext wird nicht mit CertDuplicateCTLContext dupliziert. Stattdessen wird eine neue Kopie erstellt und dem Speicher hinzugefügt. Zusätzlich zur codierten CTL werden die Eigenschaften des Kontexts kopiert.

Um den CTL-Kontext aus dem Zertifikatspeicher zu entfernen, verwenden Sie die CertDeleteCTLFromStore-Funktion .

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

CertAddEncodedCTLToStore

CertSetCTLContextProperty

Zertifikatvertrauenslistenfunktionen