CertVerifyRevocation-Funktion (wincrypt.h)

Die CertVerifyRevocation-Funktion überprüft die Sperrung status der Zertifikate, die im rgpvContext-Array enthalten sind. Wenn festgestellt wird, dass ein Zertifikat in der Liste widerrufen wurde, wird keine weitere Überprüfung durchgeführt. Dieses Array kann eine Kette von Zertifikaten sein, die von einer Endentität an die Stammautorität weitergegeben werden, aber diese Art der Zertifikatliste ist nicht erforderlich oder angenommen.

Syntax

BOOL CertVerifyRevocation(
  [in]           DWORD                   dwEncodingType,
  [in]           DWORD                   dwRevType,
  [in]           DWORD                   cContext,
  [in]           PVOID []                rgpvContext,
  [in]           DWORD                   dwFlags,
  [in, optional] PCERT_REVOCATION_PARA   pRevPara,
  [in, out]      PCERT_REVOCATION_STATUS pRevStatus
);

Parameter

[in] dwEncodingType

Gibt den verwendeten Codierungstyp an. Derzeit werden nur X509_ASN_ENCODING und PKCS_7_ASN_ENCODING verwendet. Es können jedoch in Zukunft weitere Codierungstypen hinzugefügt werden. Verwenden Sie für einen der aktuellen Codierungstypen X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] dwRevType

Gibt den Typ der in rgpvContext übergebenen Kontextstruktur an. Derzeit wird nur CERT_CONTEXT_REVOCATION_TYPE, die Sperrung von Zertifikaten, definiert.

[in] cContext

Anzahl der Elemente im rgpvContext-Array .

[in] rgpvContext

Wenn dwRevType CERT_CONTEXT_REVOCATION_TYPE ist, ist rgpvContext ein Array von Zeigern auf CERT_CONTEXT Strukturen. Diese Kontexte müssen ausreichende Informationen enthalten, damit die installierbaren oder registrierten Sperr-DLLs den Sperrserver finden können. Diese Informationen werden normalerweise in einer Erweiterung wie der Erweiterung CRLDistributionsPoints übermittelt, die von der Internet Engineering Task Force (IETF) in PKIX Part 1 definiert wird.

Je mehr Kontexte gleichzeitig übergeben werden, desto besser ist die Effizienz.

[in] dwFlags

Gibt alle besonderen Verarbeitungsanforderungen an. Dieser Parameter kann eines der folgenden Flags sein.

Wert Bedeutung
CERT_VERIFY_REV_CHAIN_FLAG
Die Überprüfung der Kette von Zertifikaten erfolgt unter der Voraussetzung, dass jedes Zertifikat mit Ausnahme des ersten Zertifikats der Aussteller des zertifikats ist, das ihm vorangestellt ist. Wenn dwRevType nicht CERT_CONTEXT_REVOCATION_TYPE ist, werden keine Annahmen über die Reihenfolge der Kontexte getroffen.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
Verhindert, dass der Sperrhandler für die Sperrüberprüfung auf netzwerkbasierte Ressourcen zugreift.
CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
Wenn festgelegt, ist dwUrlRetrievalTimeout das kumulative Timeout für alle URL-Kabelabrufe.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
Wenn diese Funktion festgelegt ist, verwendet diese Funktion nur das Onlinezertifikat status-Protokoll (OCSP) für die Sperrüberprüfung. Wenn das Zertifikat über keine OCSP-AIA-URLs verfügt, wird das dwError-Element des pRevStatus-Parameters auf CRYPT_E_NOT_IN_REVOCATION_DATABASE festgelegt.

[in, optional] pRevPara

Optional festlegen, um bei der Suche nach dem Aussteller zu helfen. Ausführliche Informationen finden Sie in der CERT_REVOCATION_PARA-Struktur .

[in, out] pRevStatus

Vor dem Aufruf von CertVerifyRevocation muss nur das cbSize-Element des CERT_REVOCATION_STATUS festgelegt werden, auf das von pRevStatus verwiesen wird.

Wenn die Funktion FALSE zurückgibt, enthalten die Member dieser Struktur Fehler status Informationen. Weitere Informationen finden Sie unter CERT_REVOCATION_STATUS. Eine Beschreibung, wie pRevStatus aktualisiert wird, wenn ein Problem mit der Sperrüberprüfung auftritt, finden Sie unter Hinweise.

Rückgabewert

Wenn die Funktion alle Kontexte erfolgreich überprüft und keiner widerrufen wurde, gibt die Funktion TRUE zurück. Wenn die Funktion fehlschlägt, gibt sie FALSE zurück und aktualisiert die CERT_REVOCATION_STATUS Struktur, auf die pRevStatus verweist, wie in CERT_REVOCATION_STATUS beschrieben.

Wenn der Sperrhandler für einen der Kontexte aufgrund eines Fehlers FALSE zurückgibt, wird der dwError-Member in der Struktur, auf die von pRevStatus verwiesen wird, vom Handler festgelegt, um anzugeben, welcher Fehler aufgetreten ist. GetLastError gibt einen Fehlercode zurück, der dem im dwError-Member der CERT_REVOCATION_STATUS-Struktur angegebenen Fehler entspricht. GetLastError kann einer der folgenden Werte sein.

Wert BESCHREIBUNG
CRYPT_E_NO_REVOCATION_CHECK
Eine installierte oder registrierte Sperrfunktion konnte keine Sperrüberprüfung für den Kontext durchführen.
CRYPT_E_NO_REVOCATION_DLL
Es wurde keine installierte oder registrierte DLL gefunden, die den Widerruf überprüfen konnte.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
Der zu überprüfende Kontext wurde in der Datenbank des Sperrservers nicht gefunden.
CRYPT_E_REVOCATION_OFFLINE
Es war nicht möglich, eine Verbindung mit dem Sperrserver herzustellen.
CRYPT_E_REVOKED
Der Kontext wurde widerrufen. dwReason in pRevStatus enthält den Widerrufsgrund.
ERROR_SUCCESS
Der Kontext war gut.
E_INVALIDARG
cbSize in pRevStatus ist kleiner als sizeof(CERT_REVOCATION_STATUS). Beachten Sie, dass dwError in pRevStatus für diesen Fehler nicht aktualisiert wird.

Hinweise

Das folgende Beispiel zeigt, wie pRevStatus aktualisiert wird, wenn ein Problem mit der Sperrüberprüfung auftritt:

Betrachten Sie den Fall, in dem cContext vier ist:

Wenn CertVerifyRevocation überprüfen kann, ob rgpvContext[0] und rgpvContext[1] nicht widerrufen werden, aber rgpvContext[2] nicht überprüfen kann, wird das pRevStatus-MemberdwIndex auf zwei festgelegt, was angibt, dass der Kontext in Index 2 das Problem aufweist, dass der dwError-Member von pRevStatus auf CRYPT_E_NO_REVOCATION_CHECK festgelegt wird, und FALSE wird zurückgegeben.

Wenn festgestellt wird, dass rgpvContext[2] widerrufen wird, wird das dwIndex-Element von pRevStatus auf zwei festgelegt, und der dwError-Member von pRevStatus ist auf CRYPT_E_REVOKED, dwReason wird aktualisiert und FALSE zurückgegeben.

In beiden Fällen werden sowohl rgpvContext[0] als auch rgpvContext[1] überprüft, um nicht widerrufen zu werden, rgpvContext[2] ist der zuletzt überprüfte Arrayindex und rgpvContext[3] wurde überhaupt nicht überprüft.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

CERT_CONTEXT

CERT_REVOCATION_PARA

CERT_REVOCATION_STATUS

CertVerifyCRLTimeValidity

CertVerifyTimeValidity

CertVerifyValidityNesting

Datenverwaltung-Funktionen