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 |
---|---|
|
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. |
|
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. |
|
Lorsqu’il est défini, dwUrlRetrievalTimeout est le délai d’attente cumulé sur toutes les récupérations de câble d’URL. |
|
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 |
---|---|
|
Une fonction de révocation installée ou inscrite n’a pas pu effectuer une vérification de révocation sur le contexte. |
|
Aucune DLL installée ou inscrite n’a été trouvée qui a pu vérifier la révocation. |
|
Le contexte à vérifier est introuvable dans la base de données du serveur de révocation. |
|
Il n’était pas possible de se connecter au serveur de révocation. |
|
Le contexte a été révoqué. dwReason dans pRevStatus contient la raison de la révocation. |
|
Le contexte était bon. |
|
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 |