CryptVerifySignatureW, fonction (wincrypt.h)
Avant d’appeler cette fonction, CryptCreateHash devez être appelée pour créer le handle d’un objet de hachage. CryptHashData ou CryptHashSessionKey est ensuite utilisé pour ajouter des données ou clés de session à l’objet de hachage.
Une fois CryptVerifySignature terminée, seul CryptDestroyHash peut être appelé à l’aide du handle hHash.
Syntaxe
BOOL CryptVerifySignatureW(
[in] HCRYPTHASH hHash,
[in] const BYTE *pbSignature,
[in] DWORD dwSigLen,
[in] HCRYPTKEY hPubKey,
[in] LPCWSTR szDescription,
[in] DWORD dwFlags
);
Paramètres
[in] hHash
Handle de l’objet de hachage à vérifier.
[in] pbSignature
Adresse des données de signature à vérifier.
[in] dwSigLen
Nombre d’octets dans les données de signature pbSignature.
[in] hPubKey
Handle de la clé publique à utiliser pour authentifier la signature. Cette clé publique doit appartenir à la paire de clés utilisée à l’origine pour créer la signature numérique .
[in] szDescription
Ce paramètre ne doit plus être utilisé et doit être défini sur NULL pour empêcher les vulnérabilités de sécurité. Toutefois, il est toujours pris en charge pour la compatibilité descendante dans le fournisseur de chiffrement de base Microsoft.
[in] dwFlags
Les valeurs d’indicateur suivantes sont définies.
Valeur de retour
Si la fonction réussit, la valeur de retour est TRUE.
Si la fonction échoue, la valeur de retour est FALSE. Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Les codes d’erreur précédés par « NTE » sont générés par le fournisseur de solutions Cloud que vous utilisez. Certains codes d’erreur possibles suivent.
Retourner le code | Description |
---|---|
|
L’un des paramètres spécifie un handle qui n’est pas valide. |
|
L’un des paramètres contient une valeur qui n’est pas valide. Il s’agit le plus souvent d’un pointeur qui n’est pas valide. |
|
Le paramètre dwFlags n’est pas zéro. |
|
L’objet de hachage spécifié par le paramètre hHash n’est pas valide. |
|
Le paramètre hPubKey ne contient pas de handle vers une clé publique valide. |
|
La signature n’a pas été valide. Cela peut être dû au fait que les données elles-mêmes ont changé, que la chaîne de description ne correspond pas ou que la clé publique incorrecte a été spécifiée par hPubKey.
Cette erreur peut également être retournée si les algorithmes de hachage ou de signature ne correspondent pas aux algorithmes utilisés pour créer la signature. |
|
Le contexte fournisseur de services de chiffrement (CSP) spécifié lorsque l’objet de hachage a été créé est introuvable. |
|
Le fournisseur de solutions Cloud n’a plus de mémoire pendant l’opération. |
Remarques
La fonction CryptVerifySignature termine le hachage. Après cet appel, aucune autre donnée ne peut être ajoutée au hachage. Des appels supplémentaires à CryptHashData ou CryptHashSessionKey échouent. Une fois l’application terminée avec le hachage, CryptDestroyHash doit être appelée pour détruire l’objet de hachage.
Si vous générez une signature à l’aide des API .NET Framework et essayez de le vérifier à l’aide de la fonction CryptVerifySignature, la fonction échoue et GetLastError retourne NTE_BAD_SIGNATURE. Cela est dû aux différentes commandes d’octets entre l’API Win32 native et l’API .NET Framework.
L’API de chiffrement native utilise l’ordre d’octets little-endian tandis que l’API .NET Framework utilise l’ordre d’octets big-endian. Si vous vérifiez une signature générée à l’aide d’une API .NET Framework, vous devez échanger l’ordre des octets de signature avant d’appeler la fonction CryptVerifySignature pour vérifier la signature.
Exemples
Pour obtenir un exemple qui utilise la fonction CryptVerifySignature, consultez exemple de programme C : signature d’un hachage et vérification de la signature de hachage.
Note
L’en-tête wincrypt.h définit CryptVerifySignature comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | wincrypt.h |
bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |