Fonction CertVerifyRevocation (wincrypt.h)

La fonction CertVerifyRevocation vérifie la révocation status des certificats contenus dans le tableau rgpvContext. Si un certificat de la liste est révoqué, aucune vérification supplémentaire n’est effectuée. Ce tableau peut être une chaîne de certificats se propageant vers le haut d’une entité de fin à l’autorité racine, mais cette nature de la liste des certificats n’est pas obligatoire 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, seuls les X509_ASN_ENCODING et les PKCS_7_ASN_ENCODING sont utilisés ; 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 sont normalement transmises dans une extension telle que l’extension CRLDistributionsPoints définie par l’Internet Engineering Task Force (IETF) dans PKIX Part 1.

Pour plus d’efficacité, plus il y a de contextes passés à la 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 est effectuée en supposant que chaque certificat, à l’exception du premier certificat, est l’émetteur du certificat qui le précède. Si dwRevType n’est pas CERT_CONTEXT_REVOCATION_TYPE, aucune hypothèse n’est faite concernant l’ordre des contextes.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
Empêche le gestionnaire de révocation d’accéder aux ressources 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é pour toutes les récupérations de fil d’URL.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
Lorsqu’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

Si vous le souhaitez, définissez 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’erreur status. 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 Remarques.

Valeur retournée

Si la fonction vérifie correctement tous les contextes et qu’aucun n’a été révoqué, 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 pour l’un des contextes retourne FALSE en raison d’une erreur, le membre dwError dans la structure pointée par pRevStatus est défini par le gestionnaire pour spécifier l’erreur 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 de révocation case activée 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’a pas été 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.

Remarques

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

Prenons 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 peut pas case activée rgpvContext[2], le membre pRevStatusdwIndex est défini sur deux, ce qui indique que le contexte à l’index 2 a le problème, que le membre dwError de pRevStatus est défini sur CRYPT_E_NO_REVOCATION_CHECK et FALSE est retourné.

Si rgpvContext[2] est 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

Condition requise Valeur
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

Gestion des données Functions