Freigeben über


CertAddCRLContextToStore-Funktion (wincrypt.h)

Die CertAddCRLContextToStore-Funktion fügt dem angegebenen Zertifikatspeicher einen Zertifikatsperrlistenkontext (Certificate Revocation List, CRL) hinzu.

Syntax

BOOL CertAddCRLContextToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            PCCRL_CONTEXT pCrlContext,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCRL_CONTEXT *ppStoreContext
);

Parameter

[in] hCertStore

Handle eines Zertifikatspeichers.

[in] pCrlContext

Ein Zeiger auf die hinzuzufügende CRL_CONTEXT-Struktur .

[in] dwAddDisposition

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

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

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

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

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

[out, optional] ppStoreContext

Ein Zeiger auf einen Zeiger auf den decodierten CRL-Kontext. Dies ist ein optionaler Parameter, der NULL sein kann, was angibt, dass die aufrufende Anwendung keine Kopie der hinzugefügten oder vorhandenen Zertifikatsperrliste benötigt. Wenn eine Kopie erstellt wird, muss dieser Kontext mithilfe von CertFreeCRLContext 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 Zertifikatsperrliste bereits im Speicher vorhanden ist oder wenn CERT_STORE_ADD_NEWER festgelegt ist und eine Zertifikatsperrliste im Speicher vorhanden ist, deren ThisUpdate-Datum größer oder gleich dem ThisUpdate-Datum in der hinzuzufügenden Zertifikatsperrliste ist.
E_INVALIDARG
Der dwAddDisposition-Parameter hat einen ungültigen Dispositionswert angegeben.

Hinweise

Der CRL-Kontext wird mit CertDuplicateCRLContext nicht dupliziert. Stattdessen wird eine neue Kopie erstellt und dem Speicher hinzugefügt. Zusätzlich zum Kopieren der codierten Zertifikatsperrliste kopiert die Funktion die Eigenschaften des Kontexts.

Um den CRL-Kontext aus dem Zertifikatspeicher zu entfernen, verwenden Sie die CertDeleteCRLFromStore-Funktion .

Anforderungen

   
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

CertAddEncodedCRLToStore

CertDuplicateCRLContext

CertFreeCRLContext

CertSetCRLContextProperty

Zertifikatsperrlistenfunktionen