Fonction CertVerifyRevocation (wincrypt.h)

La fonction CertVerifyRevocation vérifie l’état de révocation des certificats contenus dans le tableau rgpvContext . Si un certificat dans la liste est détecté comme révoqué, aucune vérification supplémentaire n’est effectuée. Ce tableau peut être une chaîne de certificats qui se propagent vers le haut d’une entité finale à l’autorité racine, mais cette nature de la liste des certificats n’est pas requise ou supposée.

Syntaxe

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
);

Paramètres

[in] dwEncodingType

Spécifie le type d’encodage utilisé. Actuellement, seules les X509_ASN_ENCODING et les PKCS_7_ASN_ENCODING sont utilisées ; toutefois, des types d’encodage supplémentaires peuvent être ajoutés à l’avenir. Pour l’un ou l’autre type d’encodage actuel, utilisez X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] dwRevType

Indique le type de la structure de contexte passée dans rgpvContext. Actuellement, seule CERT_CONTEXT_REVOCATION_TYPE, la révocation des certificats, est définie.

[in] cContext

Nombre d’éléments dans le tableau rgpvContext .

[in] rgpvContext

Lorsque dwRevType est CERT_CONTEXT_REVOCATION_TYPE, rgpvContext est un tableau de pointeurs vers CERT_CONTEXT structures. Ces contextes doivent contenir suffisamment d’informations pour permettre aux DLL de révocation installables ou inscrites de trouver le serveur de révocation. Ces informations seraient normalement transmises dans une extension telle que l’extension CRLDistributionsPoints définie par l’Internet Engineering Task Force (IETF) dans PKIX, partie 1.

Pour plus d’efficacité, plus les contextes sont passés en une seule fois, mieux c’est.

[in] dwFlags

Indique les besoins de traitement spéciaux. Ce paramètre peut être l’un des indicateurs suivants.

Valeur Signification
CERT_VERIFY_REV_CHAIN_FLAG
La vérification de la chaîne de certificats s’effectue en supposant que chaque certificat sauf que le premier certificat est l’émetteur du certificat qui l’précède. Si dwRevType n’est pas CERT_CONTEXT_REVOCATION_TYPE, aucune hypothèse n’est faite sur l’ordre des contextes.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
Empêche le gestionnaire de révocation d’accéder à toutes les ressources basées sur le réseau pour la vérification de la révocation.
CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
Lorsqu’il est défini, dwUrlRetrievalTimeout est le délai d’attente cumulé sur toutes les récupérations de câble d’URL.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
Quand elle est définie, cette fonction utilise uniquement le protocole OCSP ( Online Certificate Status Protocol ) pour la vérification de la révocation. Si le certificat n’a pas d’URL AIA OCSP, le membre dwError du paramètre pRevStatus est défini sur CRYPT_E_NOT_IN_REVOCATION_DATABASE.

[in, optional] pRevPara

Éventuellement défini pour faciliter la recherche de l’émetteur. Pour plus d’informations, consultez la structure CERT_REVOCATION_PARA .

[in, out] pRevStatus

Seul le membre cbSize du CERT_REVOCATION_STATUS pointé par pRevStatus doit être défini avant l’appel de CertVerifyRevocation .

Si la fonction retourne FALSE, les membres de cette structure contiennent des informations d’état d’erreur. Pour plus d’informations, consultez CERT_REVOCATION_STATUS. Pour obtenir une description de la façon dont pRevStatus est mis à jour lorsqu’un problème de vérification de révocation est rencontré, consultez Notes.

Valeur retournée

Si la fonction vérifie correctement tous les contextes et qu’aucune n’a été révoquée, la fonction retourne TRUE. Si la fonction échoue, elle retourne FALSE et met à jour la structure CERT_REVOCATION_STATUS pointée par pRevStatus , comme décrit dans CERT_REVOCATION_STATUS.

Lorsque le gestionnaire de révocation de l’un des contextes retourne FALSE en raison d’une erreur, le membre dwError dans la structure vers laquelle pointe pRevStatus est défini par le gestionnaire pour spécifier l’erreur qui a été rencontrée. GetLastError retourne un code d’erreur égal à l’erreur spécifiée dans le membre dwError de la structure CERT_REVOCATION_STATUS . GetLastError peut être l’une des valeurs suivantes.

Valeur Description
CRYPT_E_NO_REVOCATION_CHECK
Une fonction de révocation installée ou inscrite n’a pas pu effectuer une vérification de révocation sur le contexte.
CRYPT_E_NO_REVOCATION_DLL
Aucune DLL installée ou inscrite n’a été trouvée qui a pu vérifier la révocation.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
Le contexte à vérifier est introuvable dans la base de données du serveur de révocation.
CRYPT_E_REVOCATION_OFFLINE
Il n’était pas possible de se connecter au serveur de révocation.
CRYPT_E_REVOKED
Le contexte a été révoqué. dwReason dans pRevStatus contient la raison de la révocation.
ERROR_SUCCESS
Le contexte était bon.
E_INVALIDARG
cbSize dans pRevStatus est inférieur à sizeof(CERT_REVOCATION_STATUS). Notez que dwError dans pRevStatus n’est pas mis à jour pour cette erreur.

Notes

L’exemple suivant montre comment pRevStatus est mis à jour lorsqu’un problème de vérification de révocation est rencontré :

Considérez le cas où cContext est quatre :

Si CertVerifyRevocation peut vérifier que rgpvContext[0] et rgpvContext[1] ne sont pas révoqués, mais ne peuvent pas vérifier rgpvContext[2], le membre pRevStatusdwIndex est défini sur deux, indiquant que le contexte à l’index 2 a le problème, le membre dwError de pRevStatus est défini sur CRYPT_E_NO_REVOCATION_CHECK et FALSE est retourné.

Si rgpvContext[2] est trouvé révoqué, le membre dwIndex de pRevStatus est défini sur deux, et le membre dwError de pRevStatus est défini sur CRYPT_E_REVOKED, dwReason est mis à jour et FALSE est retourné.

Dans les deux cas, rgpvContext[0] et rgpvContext[1] sont vérifiés pour ne pas être révoqués, rgpvContext[2] est le dernier index de tableau vérifié, et rgpvContext[3] n’a pas été vérifié du tout.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

CERT_CONTEXT

CERT_REVOCATION_PARA

CERT_REVOCATION_STATUS

CertVerifyCRLTimeValidity

CertVerifyTimeValidity

CertVerifyValidityNesting

fonctions Gestion des données