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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
---|---|
|
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. |
|
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 |