CertFindCRLInStore-Funktion (wincrypt.h)

Die CertFindCRLInStore-Funktion sucht den ersten oder nächsten Zertifikatsperrlistenkontext (Certificate Revocation List , CRL) in einem Zertifikatspeicher , der einem Suchkriterium entspricht, das durch den dwFindType-Parameter und den zugeordneten pvFindPara-Parameter festgelegt wurde. Diese Funktion kann in einer Schleife verwendet werden, um alle CRL-Kontexte in einem Zertifikatspeicher zu suchen, die den angegebenen Suchkriterien entsprechen.

Syntax

PCCRL_CONTEXT CertFindCRLInStore(
  [in] HCERTSTORE    hCertStore,
  [in] DWORD         dwCertEncodingType,
  [in] DWORD         dwFindFlags,
  [in] DWORD         dwFindType,
  [in] const void    *pvFindPara,
  [in] PCCRL_CONTEXT pPrevCrlContext
);

Parameter

[in] hCertStore

Ein Handle des zu durchsuchenden Zertifikatspeichers.

[in] dwCertEncodingType

Dieser Parameter wird derzeit nicht verwendet. Er muss auf 0 (null) festgelegt werden.

[in] dwFindFlags

Wenn dwFindType CRL_FIND_ISSUED_BY ist, wird standardmäßig nur der Ausstellernamensabgleich durchgeführt. Die folgenden Flags können verwendet werden, um zusätzliche Filterungen durchzuführen.

Wert Bedeutung
CRL_FIND_ISSUED_BY_AKI_FLAG
Sucht nach einer Zertifikatsperrliste, die über eine AKI-Erweiterung (Authority Key Identifier) verfügt. Wenn die Zertifikatsperrliste über eine AKI verfügt, wird nur eine Zertifikatsperrliste zurückgegeben, deren AKI mit dem Aussteller übereinstimmt.
Hinweis Die AKI-Erweiterung verfügt über den OID-Wert ( Object Identifier ) szOID_AUTHORITY_KEY_IDENTIFIER2 und die entsprechende Datenstruktur.
 
CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
Verwenden Sie den öffentlichen Schlüssel im Zertifikat des Ausstellers, um die Signatur auf der Zertifikatsperrliste zu überprüfen. Gibt nur eine Zertifikatsperrliste zurück, die über eine gültige Signatur verfügt.
CRL_FIND_ISSUED_BY_DELTA_FLAG
Sucht eine Delta-CRL und gibt sie zurück.
CRL_FIND_ISSUED_BY_BASE_FLAG
Sucht und gibt eine Basis-Zertifikatsperrliste zurück.
CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG
Die Signatur wird nach erfolgreicher Überprüfung auf Stärke überprüft. Dieses Flag gilt nur, wenn der dwFindType-Parameter auf CRL_FIND_ISSUED_FOR festgelegt ist. Sie müssen auch CRL_FIND_ISSUED_BY_SIGNATURE_FLAG festlegen. Bei erfolgreicher Ausführung werden die folgenden Starken Signatureigenschaften für den CRL-Kontext festgelegt:
  • CERT_SIGN_HASH_CNG_ALG_PROP_ID
  • CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Windows 8 und Windows Server 2012: Die Unterstützung für dieses Flag beginnt.

[in] dwFindType

Gibt den Typ der durchgeführten Suche an. Der Wert von dwFindType bestimmt den Datentyp, den Inhalt und die Verwendung des pvFindPara-Parameters . Derzeit definierte Suchtypen und deren pvFindPara-Anforderungen sind wie folgt.

Wert Bedeutung
CRL_FIND_ANY
Der Parameter pvFindPara wird nicht verwendet. Er muss auf NULL festgelegt werden.
Keine Suchkriterien. Die nächste Zertifikatsperrliste im Speicher wird zurückgegeben.
CRL_FIND_ISSUED_BY
Ein Zeiger auf eine CERT_CONTEXT.
Sucht im Speicher nach der nächsten Zertifikatsperrliste, die dem Aussteller im CERT_CONTEXT entspricht.
CRL_FIND_EXISTING
Ein Zeiger auf eine CRL_CONTEXT.
Sucht auf folgende Weise nach der nächsten Zertifikatsperrliste, die dem CRL_CONTEXT entspricht:
  • Beide sind Basis- oder Delta-CRLs.
  • Die Ausstellernamen-BLOBs für beide sind identisch.
  • Wenn sie vorhanden sind, stimmen die bloBs der codierten Authority/KeyIdentifier- und IssuingDistributionPoint-Erweiterung überein.
CRL_FIND_ISSUED_FOR
Ein Zeiger auf eine CRL_FIND_ISSUED_FOR_PARA.
Sucht im Speicher nach der nächsten Zertifikatsperrliste, die dem Aussteller des Antragstellerzertifikats in der CRL_FIND_ISSUED_FOR_PARA-Struktur entspricht.

Wenn keine Zertifikatsperrliste gefunden wird, sucht im Speicher nach der nächsten Zertifikatsperrliste, die dem Aussteller in der CRL_FIND_ISSUED_FOR_PARA-Struktur entspricht.

Hinweis Bei verwendung von zertifikatübergreifenden Zertifikaten stimmt der Antragstellername im Zertifikat des Ausstellers möglicherweise nicht mit dem Ausstellernamen im Antragstellerzertifikat und der entsprechenden Zertifikatsperrliste überein.
 

[in] pvFindPara

Dieser Parameter wird durch den Wert von dwFindType bestimmt. Weitere Informationen finden Sie in der Tabelle weiter oben in diesem Thema.

[in] pPrevCrlContext

Ein Zeiger auf den letzten CRL_CONTEXT, der von dieser Funktion zurückgegeben wurde. Muss NULL sein, um die erste Zertifikatsperrliste im Speicher abzurufen, die die Suchkriterien erfüllt. Nachfolgende CRLs, die die Suchkriterien erfüllen, können gefunden werden, indem pPrevCrlContext auf den PCCRL_CONTEXT-Zeiger festgelegt wird, der von einem vorherigen Aufruf der Funktion zurückgegeben wurde. Beim Suchvorgang werden alle Zertifikatsperrlisten übersprungen, die nicht den Suchkriterien entsprechen oder die zuvor von CertDeleteCRLFromStore aus dem Speicher gelöscht wurden. Diese Funktion gibt die CRL_CONTEXT frei, auf die von Werten dieses Parameters verwiesen wird, die nicht NULL sind.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion einen Zeiger auf einen schreibgeschützten CRL-Kontext zurück. Wenn Sie die Verwendung des zurückgegebenen CRL-Kontexts abgeschlossen haben, geben Sie ihn frei, indem Sie die CertFreeCRLContext-Funktion aufrufen, oder implizit freigeben, indem Sie ihn als pPrevCrlContext-Parameter bei einem nachfolgenden Aufruf der CertFindCRLInStore-Funktion übergeben.

Wenn die Funktion fehlschlägt und keine Zertifikatsperrliste gefunden wird, die den Suchkriterien entspricht, ist der Rückgabewert NULL. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
E_INVALIDARG
Das Handle im hCertStore-Parameter ist nicht dasselbe wie im CRL-Kontext, auf den der pPrevCrlContext-Parameter verweist, oder ein ungültiger Suchtyp wurde im dwFindType-Parameter angegeben.
CRYPT_E_NOT_FOUND
Im Speicher befinden sich keine Zertifikatsperrlisten, es wurde keine Zertifikatsperrliste gefunden, die den Suchkriterien entsprach, oder das Ende der Liste des Speichers wurde erreicht.

Hinweise

Der zurückgegebene Zeiger wird freigegeben, wenn er bei einem nachfolgenden Aufruf der Funktion als pPrevCrlContext-Parameter übergeben wird. Andernfalls muss der Zeiger explizit durch Aufrufen von CertFreeCRLContext freigegeben werden. Ein pPrevCrlContext , der nicht NULL ist, wird von CertFindCRLInStore immer mithilfe eines Aufrufs von CertFreeCRLContext freigegeben, auch wenn ein Fehler in der Funktion vorliegt.

CertDuplicateCRLContext kann aufgerufen werden, um ein Duplikat des zurückgegebenen Kontexts zu erstellen. Der zurückgegebene CRL-Kontext kann einem anderen Zertifikatspeicher mithilfe von CertAddCRLContextToStore hinzugefügt werden, oder ein Link zu diesem CRL-Kontext kann einem Nichtsammlungsspeicher mithilfe von CertAddCRLLinkToStore hinzugefügt werden.

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

CRL_CONTEXT

CertAddCRLContextToStore

CertAddCRLLinkToStore

CertDeleteCRLFromStore

CertDuplicateCRLContext

CertFreeCRLContext

Zertifikatsperrlistenfunktionen