Fonction CryptVerifyCertificateSignatureEx (wincrypt.h)
La fonction CryptVerifyCertificateSignatureEx vérifie la signature d’un certificat d’objet, une liste de révocation de certificat, une demande de certificat ou une demande keygen à l’aide de la clé publique de l’émetteur. La fonction ne nécessite pas d’accès à une clé privée.
Syntaxe
BOOL CryptVerifyCertificateSignatureEx(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwCertEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] DWORD dwIssuerType,
[in] void *pvIssuer,
[in] DWORD dwFlags,
[in, out, optional] void *pvExtra
);
Paramètres
[in] hCryptProv
Ce paramètre n’est pas utilisé et doit être défini sur NULL.
Windows Server 2003 et Windows XP : Handle du fournisseur de services de chiffrement utilisé pour vérifier la signature. Le type de données de ce paramètre est HCRYPTPROV.
La valeur NULL est transmise, sauf s’il existe une raison forte de passer un fournisseur de chiffrement spécifique. La transmission de la valeur NULL entraîne l’acquisition du fournisseur RSA ou DSS par défaut.
[in] dwCertEncodingType
Type d’encodage de certificat utilisé pour chiffrer l’objet. L’identificateur de type d’encodage de message, contenu dans le mot élevé de cette valeur, est ignoré par cette fonction.
Ce paramètre peut être le type d’encodage de certificat actuellement défini ci-dessous.
Valeur | Signification |
---|---|
|
Spécifie l’encodage du certificat X.509. |
[in] dwSubjectType
Type d’objet. Ce paramètre peut être l’un des types de sujets suivants.
Valeur | Signification |
---|---|
|
pvSubject est un pointeur vers une structure CRYPT_DATA_BLOB . |
|
pvSubject est un pointeur vers une structure CCERT_CONTEXT . |
|
pvSubject est un pointeur vers une structure CCRL_CONTEXT . |
|
pvSubject est un pointeur vers une structure OCSP_BASIC_SIGNED_RESPONSE_INFO .
Windows Server 2003 et Windows XP : Ce type de sujet n’est pas pris en charge. |
[in] pvSubject
Pointeur vers une structure du type indiqué par dwSubjectType qui contient la signature à vérifier.
[in] dwIssuerType
Type d’émetteur. Ce paramètre peut être l’un des types d’émetteurs suivants.
Valeur | Signification |
---|---|
|
pvIssuer est un pointeur vers une structure CERT_PUBLIC_KEY_INFO . |
|
pvIssuer est un pointeur vers une structure CCERT_CONTEXT . |
|
pvIssuer est un pointeur vers une structure CCERT_CHAIN_CONTEXT . |
|
pvIssuer doit avoir la valeur NULL. |
[in] pvIssuer
Pointeur vers une structure du type indiqué par la valeur de dwIssuerType. La structure contient l’accès à la clé publique nécessaire pour vérifier la signature.
[in] dwFlags
Indicateurs qui modifient le comportement de la fonction. Il peut s’agir de zéro ou d’un OR au niveau du bit des valeurs suivantes.
Valeur | Signification |
---|---|
|
Si vous définissez cet indicateur et que CryptVerifyCertificateSignatureEx détecte un algorithme MD2 ou MD4, la fonction retourne FALSE et définit GetLastError sur NTE_BAD_ALGID. La signature est toujours vérifiée, mais cette combinaison d’erreurs permet à l’appelant, sachant maintenant qu’un algorithme MD2 ou MD4 a été utilisé, de décider s’il faut approuver ou rejeter la signature.
Windows 8 et Windows Server 2012 : La prise en charge de cet indicateur commence. |
|
Définit des propriétés de signature forte, après vérification réussie, sur le sujet pointé par le paramètre pvSubject .
La propriété suivante est définie sur le contexte du certificat :
Note Cet indicateur s’applique uniquement si CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL est spécifié dans le paramètre dwSubjectType .
|
|
Retourne un pointeur vers une structure CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO dans le paramètre pvExtra . La structure contient la longueur, en bits, de la clé publique et les noms des algorithmes de signature et de hachage utilisés.
Vous devez appeler CryptMemFree pour libérer la structure. Si la mémoire ne peut pas être allouée pour la structure CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO , cette fonction retourne correctement, mais définit le paramètre pvExtra sur NULL. Note Cet indicateur s’applique uniquement si CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE est spécifié dans le paramètre dwSubjectType .
|
[in, out, optional] pvExtra
Pointeur vers une structure CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO si le paramètre dwFlags est défini sur CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG.
Vous devez appeler CryptMemFree pour libérer la structure.
Valeur retournée
Retourne une valeur différente de zéro en cas de réussite ou de zéro dans le cas contraire.
Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Code de retour | Description |
---|---|
|
Type d’encodage de certificat non valide. Actuellement, seul X509_ASN_ENCODING est pris en charge. |
|
L’identificateur d’objet (OID) de l’algorithme de signature ne correspond pas à un algorithme de hachage connu ou pris en charge. |
|
La signature n’était pas valide. |
Si la fonction échoue, GetLastError peut renvoyer une erreur d’encodage/décodage asN.1 ( Abstract Syntax Notation One ). Pour plus d’informations sur ces erreurs, consultez Valeurs de retour d’encodage/décodage ASN.1.
Remarques
La mémoire tampon d’objet peut contenir un objet BLOB encodé ou un contexte pour un certificat ou une liste de révocation de certificats. Dans le cas d’un contexte de certificat, si les paramètres de clé publique du certificat sont manquants et si ces paramètres peuvent être hérités de l’émetteur du certificat, par exemple du paramètre de clé publique DSS, la propriété CERT_PUBKEY_ALG_PARA_PROP_ID du contexte est mise à jour avec les paramètres de l’algorithme de clé publique de l’émetteur pour une signature valide.
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 |