Fonction CryptSignMessage (wincrypt.h)

La fonction CryptSignMessage crée un de hachage du contenu spécifié, signe le hachage, puis encode à la fois le contenu du message d’origine et le hachage signé.

Syntaxe

C++
BOOL CryptSignMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA pSignPara,
  [in]      BOOL                     fDetachedSignature,
  [in]      DWORD                    cToBeSigned,
  [in]      const BYTE * []          rgpbToBeSigned,
  [in]      DWORD []                 rgcbToBeSigned,
  [out]     BYTE                     *pbSignedBlob,
  [in, out] DWORD                    *pcbSignedBlob
);

Paramètres

[in] pSignPara

Pointeur vers CRYPT_SIGN_MESSAGE_PARA structure contenant les paramètres de signature.

[in] fDetachedSignature

TRUE s’il s’agit d’une signature détachée. Sinon, FALSE. Si ce paramètre est défini sur TRUE, seul le hachage signé est encodé dans pbSignedBlob. Sinon, les deux rgpbToBeSigned et le hachage signé sont encodés.

[in] cToBeSigned

Nombre d’éléments de tableau dans rgpbToBeSigned et rgcbToBeSigned. Ce paramètre doit être défini sur un, sauf si fDetachedSignature est défini sur TRUE.

[in] rgpbToBeSigned

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

[in] rgcbToBeSigned

Tableau de tailles, en octets, des mémoires tampons de contenu pointées dans rgpbToBeSigned.

[out] pbSignedBlob

Pointeur vers une mémoire tampon pour recevoir le hachage signé encodé, si fDetachedSignature est TRUE, ou à la fois le contenu codé et le hachage signé si fDetachedSignature est FALSE.

Ce paramètre peut être null pour définir la taille de ces informations à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération des données de longueur inconnue.

[in, out] pcbSignedBlob

Pointeur vers un DWORD spécifiant la taille, en octets, du pbSignedBlob tampon. Lorsque la fonction est retournée, cette variable contient la taille, en octets, du message signé et encodé.

Remarque 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. (Lors de l’entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour s’assurer que les données de sortie les plus volumineuses possibles s’adapteront à la mémoire tampon.) Lors de la 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 de retour

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

Si la fonction échoue, la valeur de retour est égale à zéro (FALSE).

Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Le code d’erreur suivant répertorie les codes d’erreur les plus couramment retournés par la fonction GetLastError.

Retourner le code Description
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbSignedBlob n’est pas suffisamment volumineuse 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 .
E_INVALIDARG
Le type d’encodage de message n’est pas valide. Actuellement, seule PKCS_7_ASN_ENCODING est prise en charge. Le cbSize dans *pSignPara n’est pas valide.
CRYPT_E_NO_KEY_PROPERTY
Le pSigningCert dans *pSignPara n’a pas de propriété CERT_KEY_PROV_INFO_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID.
 
Remarque Erreurs provenant des fonctions appelées CryptCreateHash, CryptHashDataet CryptSignHash peut être propagée à cette fonction.
 
Si la fonction échoue, GetLastError peut renvoyer une erreur d’encodage/décodage (ASN.1) de syntaxe abstraite. Pour plus d’informations sur ces erreurs, consultez valeurs de retour d’encodage/décodage ASN.1.

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 Crypt32.lib
DLL Crypt32.dll

Voir aussi

CryptSignAndEncryptMessage

CryptVerifyMessageSignature

fonctions de message simplifiées