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 |
---|---|
|
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. |
|
Empêche le gestionnaire de révocation d’accéder aux ressources réseau pour la vérification de la révocation. |
|
Lorsqu’il est défini, dwUrlRetrievalTimeout est le délai d’attente cumulé pour toutes les récupérations de fil d’URL. |
|
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 |
---|---|
|
Une fonction de révocation installée ou inscrite n’a pas pu effectuer de révocation case activée 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’a pas été 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. |
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 |