Fonction CryptHashMessage (wincrypt.h)

La fonction CryptHashMessage crée un hachage du message.

Syntaxe

BOOL CryptHashMessage(
  [in]                PCRYPT_HASH_MESSAGE_PARA pHashPara,
  [in]                BOOL                     fDetachedHash,
  [in]                DWORD                    cToBeHashed,
  [in]                const BYTE * []          rgpbToBeHashed,
  [in]                DWORD []                 rgcbToBeHashed,
  [out]               BYTE                     *pbHashedBlob,
  [in, out]           DWORD                    *pcbHashedBlob,
  [out, optional]     BYTE                     *pbComputedHash,
  [in, out, optional] DWORD                    *pcbComputedHash
);

Paramètres

[in] pHashPara

Pointeur vers une structure de CRYPT_HASH_MESSAGE_PARA qui contient les paramètres de hachage.

[in] fDetachedHash

Si ce paramètre a la valeur TRUE, seul pbComputedHash est encodé en pbHashedBlob. Sinon, rgpbToBeHashed et pbComputedHash sont encodés.

[in] cToBeHashed

Nombre d’éléments de tableau dans rgpbToBeHashed et rgcbToBeHashed. Ce paramètre ne peut être qu’un seul, sauf si fDetachedHash est défini sur TRUE.

[in] rgpbToBeHashed

Tableau de pointeurs vers des mémoires tampons qui contiennent le contenu à hacher.

[in] rgcbToBeHashed

Tableau de tailles, en octets, des mémoires tampons pointées par rgpbToBeHashed.

[out] pbHashedBlob

Pointeur vers une mémoire tampon pour recevoir le message haché encodé pour la transmission.

Ce paramètre peut avoir la valeur NULL si le message haché n’est pas nécessaire pour un traitement supplémentaire ou pour définir la taille du message haché à des fins d’allocation de mémoire. Un message haché n’est pas retourné si ce paramètre a la valeur NULL. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

[in, out] pcbHashedBlob

Pointeur vers un DWORD qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre pbHashedBlob . Lorsque la fonction retourne, cette variable contient la taille, en octets, du message déchiffré copié dans pbHashedBlob. Ce paramètre doit être l’adresse d’un DWORD et non NULL ou la longueur de la mémoire tampon ne sera pas retournée.

Note Lors du traitement des données retournées, les applications doivent utiliser la taille réelle des données retournées. La taille réelle peut être légèrement inférieure à la taille de la mémoire tampon spécifiée lors de l’entrée. En entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour garantir que les données de sortie les plus volumineuses possibles s’intègrent dans la mémoire tampon. En sortie, la variable pointée par ce paramètre est mise à jour pour refléter la taille réelle des données copiées dans la mémoire tampon.
 

[out, optional] pbComputedHash

Pointeur vers une mémoire tampon pour recevoir la valeur de hachage nouvellement créée. Ce paramètre peut avoir la valeur NULL si le hachage nouvellement créé n’est pas nécessaire pour un traitement supplémentaire ou pour définir la taille du hachage à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

[in, out, optional] pcbComputedHash

Pointeur vers un DWORD qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre pbComputedHash . Lorsque la fonction retourne, ce DWORD contient la taille, en octets, du hachage nouvellement créé qui a été copié dans pbComputedHash.

Note Lors du traitement des données retournées, les applications doivent utiliser la taille réelle des données retournées. La taille réelle peut être légèrement inférieure à la taille de la mémoire tampon spécifiée lors de l’entrée. En entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour garantir que les données de sortie les plus volumineuses possibles s’intègrent dans la mémoire tampon. En sortie, la variable pointée par ce paramètre est mise à jour pour refléter la taille réelle des données copiées dans la mémoire tampon.
 

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro (TRUE).

Si la fonction échoue, elle retourne zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Note Les erreurs des fonctions appelées CryptCreateHash, CryptHashData et CryptGetHashParam peuvent être propagées à cette fonction.
 
La fonction GetLastError retourne le plus souvent les codes d’erreur suivants.
Code de retour Description
E_INVALIDARG
Le type d’encodage de message n’est pas valide. Actuellement, seule PKCS_7_ASN_ENCODING est prise en charge. La valeur cbSize dans *pHashPara n’est pas valide.
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbHashedBlob n’est pas assez grande pour contenir les données retournées, la fonction définit le code ERROR_MORE_DATA et stocke la taille de mémoire tampon requise, en octets, dans la variable pointée par pbHashedBlob.
 

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.

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

Voir aussi

CryptVerifyDetachedMessageHash

CryptVerifyMessageHash

Fonctions de message simplifiées