Funzione CertVerifyRevocation (wincrypt.h)
La funzione CertVerifyRevocation controlla lo stato di revoca dei certificati contenuti nella matrice rgpvContext . Se viene rilevato un certificato nell'elenco, non viene eseguito alcun controllo aggiuntivo. Questa matrice può essere una catena di certificati che si propagano verso l'alto da un'entità finale all'autorità radice, ma questa natura dell'elenco di certificati non è necessaria o si presuppone.
Sintassi
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
);
Parametri
[in] dwEncodingType
Specifica il tipo di codifica usato. Attualmente vengono usati solo X509_ASN_ENCODING e PKCS_7_ASN_ENCODING; Tuttavia, è possibile aggiungere altri tipi di codifica in futuro. Per entrambi i tipi di codifica correnti, usare X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.
[in] dwRevType
Indica il tipo della struttura di contesto passata in rgpvContext. Attualmente è definito solo CERT_CONTEXT_REVOCATION_TYPE, la revoca dei certificati.
[in] cContext
Numero di elementi nella matrice rgpvContext .
[in] rgpvContext
Quando dwRevType è CERT_CONTEXT_REVOCATION_TYPE, rgpvContext è una matrice di puntatori per CERT_CONTEXT strutture. Questi contesti devono contenere informazioni sufficienti per consentire alle DLL di revoca installate o registrate di trovare il server di revoca. Queste informazioni vengono normalmente trasmesse in un'estensione, ad esempio l'estensione CRLDistributionsPoints definita dalla Internet Engineering Task Force (IETF) in PKIX Part 1.
Per efficienza, più contesti passati in una sola volta, meglio.
[in] dwFlags
Indica eventuali esigenze di elaborazione speciali. Questo parametro può essere uno dei flag seguenti.
Valore | Significato |
---|---|
|
La verifica della catena di certificati viene eseguita presupponendo che ogni certificato, ad eccezione del primo certificato sia l'autorità emittente del certificato che lo precede. Se dwRevType non è CERT_CONTEXT_REVOCATION_TYPE, non vengono effettuate ipotesi sull'ordine dei contesti. |
|
Impedisce al gestore di revoche di accedere a tutte le risorse basate sulla rete per il controllo della revoca. |
|
Se impostato, dwUrlRetrievalTimeout è il timeout cumulativo in tutti i recupero di fili URL. |
|
Se impostata, questa funzione usa solo il protocollo OCSP ( Online Certificate Status Protocol ) per il controllo delle revoche. Se il certificato non dispone di URL AIA OCSP, il membro dwError del parametro pRevStatus è impostato su CRYPT_E_NOT_IN_REVOCATION_DATABASE. |
[in, optional] pRevPara
Facoltativamente impostato per facilitare la ricerca dell'autorità di certificazione. Per informazioni dettagliate, vedere la struttura CERT_REVOCATION_PARA .
[in, out] pRevStatus
Solo il membro cbSize del CERT_REVOCATION_STATUS indicato da pRevStatus deve essere impostato prima che venga chiamato CertVerifyRevocation .
Se la funzione restituisce FALSE, i membri della struttura contengono informazioni sullo stato degli errori. Per altre informazioni, vedere CERT_REVOCATION_STATUS. Per una descrizione della modalità di aggiornamento di pRevStatus quando viene rilevato un problema di verifica della revoca, vedere Osservazioni.
Valore restituito
Se la funzione controlla correttamente tutti i contesti e nessuno è stato revocato, la funzione restituisce TRUE. Se la funzione ha esito negativo, restituisce FALSE e aggiorna la struttura CERT_REVOCATION_STATUS puntata da pRevStatus , come descritto in CERT_REVOCATION_STATUS.
Quando il gestore di revoca per uno qualsiasi dei contesti restituisce FALSE a causa di un errore, il membro dwError nella struttura a cui punta pRevStatus verrà impostato dal gestore per specificare quale errore è stato rilevato. GetLastError restituisce un codice di errore uguale all'errore specificato nel membro dwError della struttura CERT_REVOCATION_STATUS . GetLastError può essere uno dei valori seguenti.
Valore | Descrizione |
---|---|
|
Una funzione di revoca installata o registrata non è stata in grado di eseguire un controllo di revoca nel contesto. |
|
Non è stata rilevata alcuna DLL installata o registrata che è stata in grado di verificare la revoca. |
|
Il contesto da controllare non è stato trovato nel database del server di revoca. |
|
Non è stato possibile connettersi al server di revoca. |
|
Il contesto è stato revocato. dwReason in pRevStatus contiene il motivo della revoca. |
|
Il contesto era buono. |
|
cbSize in pRevStatus è minore di sizeof(CERT_REVOCATION_STATUS). Si noti che dwError in pRevStatus non viene aggiornato per questo errore. |
Commenti
Nell'esempio seguente viene illustrato come viene aggiornato pRevStatus quando viene rilevato un problema di verifica della revoca:
Si consideri il caso in cui cContext è quattro:
Se CertVerifyRevocation può verificare che rgpvContext[0] e rgpvContext[1] non vengano revocati, ma non sia possibile controllare rgpvContext[2], il membro pRevStatusdwIndex è impostato su due, indicando che il contesto in corrispondenza dell'indice due ha il problema, il membro dwError di pRevStatus è impostato su CRYPT_E_NO_REVOCATION_CHECK e FALSE viene restituito.
Se viene rilevato che rgpvContext[2] viene revocato, il membro dwIndex di pRevStatus è impostato su due e il membro dwError di pRevStatus è impostato su CRYPT_E_REVOKED, dwReason viene aggiornato e viene restituitoFALSE.
In entrambi i casi, sia rgpvContext[0] che rgpvContext[1] non devono essere revocati, rgpvContext[2] è l'ultimo indice di matrice controllato e rgpvContext[3] non è stato controllato.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | wincrypt.h |
Libreria | Crypt32.lib |
DLL | Crypt32.dll |