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
CERT_VERIFY_REV_CHAIN_FLAG
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.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
Impedisce al gestore di revoche di accedere a tutte le risorse basate sulla rete per il controllo della revoca.
CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
Se impostato, dwUrlRetrievalTimeout è il timeout cumulativo in tutti i recupero di fili URL.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
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
CRYPT_E_NO_REVOCATION_CHECK
Una funzione di revoca installata o registrata non è stata in grado di eseguire un controllo di revoca nel contesto.
CRYPT_E_NO_REVOCATION_DLL
Non è stata rilevata alcuna DLL installata o registrata che è stata in grado di verificare la revoca.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
Il contesto da controllare non è stato trovato nel database del server di revoca.
CRYPT_E_REVOCATION_OFFLINE
Non è stato possibile connettersi al server di revoca.
CRYPT_E_REVOKED
Il contesto è stato revocato. dwReason in pRevStatus contiene il motivo della revoca.
ERROR_SUCCESS
Il contesto era buono.
E_INVALIDARG
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

Vedi anche

CERT_CONTEXT

CERT_REVOCATION_PARA

CERT_REVOCATION_STATUS

CertVerifyCRLTime Validità

CertVerifyTime Validità

CertVerify ValidNesting

Funzioni Gestione dati