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 |
---|---|
|
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. |
|
Verhindert, dass der Sperrhandler für die Sperrüberprüfung auf netzwerkbasierte Ressourcen zugreift. |
|
Wenn festgelegt, ist dwUrlRetrievalTimeout das kumulative Timeout für alle URL-Kabelabrufe. |
|
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 |
---|---|
|
Eine installierte oder registrierte Sperrfunktion konnte keine Sperrüberprüfung für den Kontext durchführen. |
|
Es wurde keine installierte oder registrierte DLL gefunden, die den Widerruf überprüfen konnte. |
|
Der zu überprüfende Kontext wurde in der Datenbank des Sperrservers nicht gefunden. |
|
Es war nicht möglich, eine Verbindung mit dem Sperrserver herzustellen. |
|
Der Kontext wurde widerrufen. dwReason in pRevStatus enthält den Widerrufsgrund. |
|
Der Kontext war gut. |
|
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 |