Fonction CertVerifyCertificateChainPolicy (wincrypt.h)
La fonction CertVerifyCertificateChainPolicy vérifie une chaîne de certificats pour vérifier sa validité, y compris sa conformité avec les critères de stratégie de validité spécifiés.
Syntaxe
BOOL CertVerifyCertificateChainPolicy(
[in] LPCSTR pszPolicyOID,
[in] PCCERT_CHAIN_CONTEXT pChainContext,
[in] PCERT_CHAIN_POLICY_PARA pPolicyPara,
[in, out] PCERT_CHAIN_POLICY_STATUS pPolicyStatus
);
Paramètres
[in] pszPolicyOID
Les structures de stratégie de chaîne de vérification prédéfinies actuelles sont répertoriées dans le tableau suivant.
Valeur | Signification |
---|---|
CERT_CHAIN_POLICY_BASE (LPCSTR) 1 |
Implémente les vérifications de la stratégie de chaîne de base. Les dwFlags membre de la structure pointée par pPolicyPara peuvent être définis pour modifier le comportement de vérification de stratégie par défaut. |
CERT_CHAIN_POLICY_AUTHENTICODE (LPCSTR) 2 |
Implémente les vérifications de vérification de la stratégie Authenticode. Le membre pvExtraPolicyPara de la structure pointée par pPolicyPara peut être défini pour pointer vers une structure AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA. Le pvExtraPolicyStatus membre de la structure pointée par pPolicyStatus peut être défini pour pointer vers une structure AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS. |
CERT_CHAIN_POLICY_AUTHENTICODE_TS (LPCSTR) 3 |
Implémente les vérifications de la stratégie de chaîne d’horodatage Authenticode. Le membre pvExtraPolicyPara de la structure de données pointée par pPolicyPara peut être défini pour pointer vers une structure AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA. Le pvExtraPolicyStatus membre de la structure de données pointée par pPolicyStatus n’est pas utilisé et doit être défini sur NULL . |
CERT_CHAIN_POLICY_SSL (LPCSTR) 4 |
Implémente les vérifications de la stratégie de chaîne de serveur/client SSL. Le membre pvExtraPolicyPara dans la structure de données pointée par pPolicyPara peut être défini pour pointer vers une structure SSL_EXTRA_CERT_CHAIN_POLICY_PARA initialisée avec des critères de stratégie supplémentaires. Remarque : Pour différencier les certificats d’autorisation du serveur et du client, l’appel à la fonction CertGetCertificateChain pour obtenir le contexte de chaîne doit spécifier le type de certificat en définissant l’utilisation attendue. Définissez l’utilisation attendue en définissant le membre |
CERT_CHAIN_POLICY_BASIC_CONSTRAINTS (LPCSTR) 5 |
Implémente la stratégie de chaîne de contraintes de base. Effectue une itération dans tous les certificats de la vérification de la chaîne pour une extension de szOID_BASIC_CONSTRAINTS ou de szOID_BASIC_CONSTRAINTS2. Si aucune extension n’est présente, le certificat est supposé avoir une stratégie valide. Sinon, pour le premier élément de certificat, vérifie s’il correspond à la CA_FLAG attendue ou END_ENTITY_FLAG spécifiée dans le membre Les premiers éléments des chaînes simples restantes (c’est-à-dire les certificats utilisés pour signer la durée de vie) sont vérifiés pour être un END_ENTITY. Si cette vérification échoue, dwError est défini sur TRUST_E_BASIC_CONSTRAINTS. |
CERT_CHAIN_POLICY_NT_AUTH (LPCSTR) 6 |
Implémente la stratégie de chaîne d’authentification Windows NT, qui se compose de trois vérifications de chaîne distinctes dans l’ordre suivant : - CERT_CHAIN_POLICY_BASE : implémente les vérifications de vérification de la stratégie de chaîne de base. Le LOWORD de dwFlags peut être défini dans pPolicyPara pour modifier le comportement de vérification de stratégie par défaut. Pour plus d’informations, consultez CERT_CHAIN_POLICY_BASE. - CERT_CHAIN_POLICY_BASIC_CONSTRAINTS : implémente la stratégie de chaîne de contraintes de base. HiWORD de dwFlags peut être défini pour spécifier si le premier élément doit être une autorité de certification ou END_ENTITY. Pour plus d’informations, consultez CERT_CHAIN_POLICY_BASIC_CONSTRAINTS. - Vérifie si le deuxième élément de la chaîne, l’autorité de certification qui a émis le certificat final, est une autorité de certification approuvée pour l’authentification Windows NT. Une autorité de certification est considérée comme approuvée s’il existe dans le magasin de registre du système « NTAuth » trouvé dans l’emplacement du magasin CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE. Si cette vérification échoue, l’autorité de certification n’est pas approuvée et dwError est définie sur CERT_E_UNTRUSTEDCA. Si CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG est défini dans la valeur des indicateurs de |
CERT_CHAIN_POLICY_MICROSOFT_ROOT (LPCSTR) 7 |
Vérifie le dernier élément de la première chaîne simple pour une clé publique racine Microsoft. Si cet élément ne contient pas de clé publique racine Microsoft, le membre dwError de la structure CERT_CHAIN_POLICY_STATUS pointée par le paramètre pPolicyStatus est défini sur CERT_E_UNTRUSTEDROOT. Le Le dwFlags membre de la structure CERT_CHAIN_POLICY_PARA pointée par le paramètre pPolicyPara peut contenir l’indicateur MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG, ce qui entraîne également la vérification des racines de test Microsoft. remarque : Cette stratégie identificateur d’objet (OID) n’effectue pas de vérification de stratégie elle-même, elle est destinée à être utilisée conjointement avec d’autres stratégies. |
CERT_CHAIN_POLICY_EV (LPCSTR) 8 |
Spécifie que la validation étendue des certificats est effectuée. Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge. |
CERT_CHAIN_POLICY_SSL_F12 (LPCSTR) 9 |
Vérifie si des certificats de la chaîne ont un chiffrement faible ou si la conformité des certificats racines tiers et fournissent une chaîne d’erreur. Le pvExtraPolicyStatus membre de la structure CERT_CHAIN_POLICY_STATUS pointée par le paramètre pPolicyStatus doit pointer vers SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS, qui est mis à jour avec les résultats des vérifications de conformité du programme racine et de chiffrement faible. Avant d’appeler, le Le membre dwError dans CERT_CHAIN_POLICY_STATUS structure pointée par le paramètre pPolicyStatus sera défini sur TRUST_E_CERT_SIGNATURE pour le chiffrement faible potentiel et défini sur CERT_E_UNTRUSTEDROOT pour les racines tierces non conformes au programme racine Microsoft. Windows 10, version 1607, Windows Server 2016, Windows 10, version 1511 avec KB3172985, Windows 10 RTM avec KB3163912, Windows 8.1 et Windows Server 2012 R2 avec KB3163912 et Windows 7 avec SP1 et Windows Server 2008 R2 SP1 avec KB3161029 |
[in] pChainContext
Pointeur vers une structure CERT_CHAIN_CONTEXT qui contient une chaîne à vérifier.
[in] pPolicyPara
Pointeur vers une structure CERT_CHAIN_POLICY_PARA qui fournit les critères de vérification de stratégie pour la chaîne. Les dwFlags membre de cette structure peuvent être définis pour modifier le comportement de vérification de stratégie par défaut.
En outre, les paramètres spécifiques à la stratégie peuvent également être transmis dans le membre pvExtraPolicyPara de la structure.
[in, out] pPolicyStatus
Pointeur vers une structure CERT_CHAIN_POLICY_STATUS où les informations d’état sur la chaîne sont retournées. L’état supplémentaire spécifique à l’OID peut être retourné dans le pvExtraPolicyStatus membre de cette structure.
Valeur de retour
La valeur de retour indique si la fonction a pu vérifier la stratégie, elle n’indique pas si la vérification de la stratégie a échoué ou passée.
Si la chaîne peut être vérifiée pour la stratégie spécifiée, 0
(ERROR_SUCCESS ou S_OK) indique que la chaîne satisfait à la stratégie spécifiée.
Si la chaîne ne peut pas être validée, la valeur de retour est TRUE
et vous devez vérifier le paramètre pPolicyStatus pour l’erreur réelle.
Une valeur de FALSE
indique que la fonction n’a pas pu vérifier la stratégie.
Remarques
Un membre dwError de la structure CERT_CHAIN_POLICY_STATUS pointée par pPolicyStatus peut s’appliquer à un élément de chaîne unique, à une chaîne simple ou à un contexte de chaîne entier. Si –1
et lChainIndex est défini sur l’index de la première chaîne ayant une erreur. Si dwError s’applique à un seul élément de certificat, lChainIndex et lElementIndex indexer le premier certificat ayant l’erreur.
Pour obtenir l’élément de certificat, utilisez cette syntaxe :
pChainContext->rgpChain[lChainIndex]->rgpElement[lElementIndex];
Utilisez la fonction CertGetCertificateChain pour activer et effectuer la vérification de la révocation des certificats. La fonction CertVerifyCertificateChainPolicy ne vérifie pas si les certificats de la chaîne de certificats sont révoqués.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau | Applications UWP] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau | Applications UWP] |
plateforme cible | Windows |
d’en-tête | wincrypt.h |
bibliothèque | Crypt32.lib |
DLL | Crypt32.dll |
Voir aussi
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS