Freigeben über


CertAddCTLLinkToStore-Funktion (wincrypt.h)

Die CertAddCTLLinkToStore-Funktion fügt einen Link in einem Speicher zu einem CTL-Kontext (Certificate Trust List, Zertifikatvertrauensliste) in einem anderen Speicher hinzu. Anstatt ein Duplikat eines CTL-Kontexts zu erstellen und hinzuzufügen, fügt diese Funktion einen Link zum ursprünglichen CTL-Kontext hinzu.

Syntax

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

Parameter

[in] hCertStore

Handle des Zertifikatspeichers, in dem der Link hinzugefügt werden soll.

[in] pCtlContext

Ein Zeiger auf die zu verknüpfende CTL_CONTEXT-Struktur.

[in] dwAddDisposition

Gibt die Aktion an, die ausgeführt werden soll, wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL 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 CTL oder einen Link zu einer übereinstimmenden CTL durch. Dem Store wird immer eine neue CTL hinzugefügt. Dies kann zu Duplikaten in einem Speicher 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 hat, die kleiner ist als die ThisUpdate-Zeit in der neuen CTL, wird die alte CTL oder der alte Link wie durch CERT_STORE_ADD_REPLACE_EXISTING ersetzt. Wenn die vorhandene CTL eine ThisUpdate-Zeit hat, die größer 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 Store eine neue CTL hinzugefügt.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
Die Aktion ist die gleiche wie bei CERT_STORE_ADD_NEWER. Wenn eine ältere CTL ersetzt wird, werden die Eigenschaften der älteren CTL in die Ersatz-CTL integriert.
CERT_STORE_ADD_REPLACE_EXISTING
Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL vorhanden ist, wird die vorhandene CTL oder der Link gelöscht, und eine neue CTL wird erstellt und dem Speicher hinzugefügt. Wenn eine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL nicht 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 gelöscht, bevor der neue Kontext erstellt und hinzugefügt wird. 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 keine übereinstimmende CTL oder ein Link zu einer übereinstimmenden CTL vorhanden ist, wird eine neue CTL hinzugefügt.

[out, optional] ppStoreContext

Ein Zeiger auf einen Zeiger auf eine Kopie des erstellten Links. ppStoreContext kann NULL sein, um anzugeben, dass keine Kopie des Links erforderlich ist. Wenn eine Kopie des Links erstellt wird, muss diese Kopie mit 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. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
CRYPT_E_EXISTS
Für eine dwAddDisposition von CERT_STORE_ADD_NEW ist die CTL bereits im Speicher vorhanden.
E_INVALIDARG
Die vom dwAddDisposition-Parameter angegebene Add-Disposition ist ungültig.

Hinweise

Da der Link Zugriff auf den ursprünglichen CTL-Kontext ermöglicht, ändert das Festlegen einer erweiterten Eigenschaft im verknüpften CTL-Kontext diese erweiterte Eigenschaft am Speicherort der ursprünglichen CTL und in allen anderen Links zu dieser CTL.

Einem Speicher, der als Sammlung geöffnet wird, können keine Links hinzugefügt werden. Als Sammlungen geöffnete Stores umfassen alle Geschäfte, die mit CertOpenSystemStore oder CertOpenStore mit CERT_STORE_PROV_SYSTEM oder CERT_STORE_PROV_COLLECTION geöffnet wurden. Siehe auch CertAddStoreToCollection.

Wenn Links verwendet werden und CertCloseStore mit CERT_CLOSE_STORE_FORCE_FLAG aufgerufen wird, muss der Speicher, der Links verwendet, geschlossen werden, bevor der Speicher mit den ursprünglichen Kontexten geschlossen wird. Wenn CERT_CLOSE_STORE_FORCE_FLAG nicht verwendet wird, können die beiden Filialen in beiden Reihenfolge geschlossen werden.

Um den CTL-Kontextlink 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

CertAddCRLLinkToStore

CertAddCertificateLinkToStore

CertAddStoreToCollection

CertFreeCTLContext

CertOpenSystemStore

Listenfunktionen für Zertifikatvertrauensstellungen