Partager via


Fonction CryptSignAndEncryptMessage (wincrypt.h)

La fonction CryptSignAndEncryptMessage crée un hachage du contenu spécifié, signe le hachage, chiffre le contenu, hache le contenu chiffré et le hachage signé, puis encode à la fois le contenu chiffré et le hachage signé. Le résultat est le même que si le hachage était d’abord signé, puis chiffré.

Syntaxe

BOOL CryptSignAndEncryptMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA    pSignPara,
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeSignedAndEncrypted,
  [in]      DWORD                       cbToBeSignedAndEncrypted,
  [out]     BYTE                        *pbSignedAndEncryptedBlob,
  [in, out] DWORD                       *pcbSignedAndEncryptedBlob
);

Paramètres

[in] pSignPara

Pointeur vers une structure CRYPT_SIGN_MESSAGE_PARA qui contient les paramètres de signature.

[in] pEncryptPara

Pointeur vers une structure de CRYPT_ENCRYPT_MESSAGE_PARA contenant des paramètres de chiffrement.

[in] cRecipientCert

Nombre d’éléments de tableau dans rgpRecipientCert.

[in] rgpRecipientCert

Tableau de pointeurs vers CERT_CONTEXT structures. Chaque structure est le certificat d’un destinataire prévu du message.

[in] pbToBeSignedAndEncrypted

Pointeur vers une mémoire tampon contenant le contenu à signer et à chiffrer.

[in] cbToBeSignedAndEncrypted

Taille, en octets, de la mémoire tampon pbToBeSignedAndEncrypted .

[out] pbSignedAndEncryptedBlob

Pointeur vers une mémoire tampon pour recevoir le message chiffré et encodé.

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

[in, out] pcbSignedAndEncryptedBlob

Pointeur vers DWORD spécifiant la taille, en octets, de la mémoire tampon pointée par pbSignedAndEncryptedBlob. Lorsque la fonction retourne, cette variable contient la taille, en octets, du message signé et chiffré copié dans *pbSignedAndEncryptedBlob.

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 valeur de retour est différente de zéro (TRUE).

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

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

La liste suivante répertorie le code d’erreur le plus souvent retourné par la fonction GetLastError .

Code de retour Description
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbSignedAndEncryptedBlob 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 pcbSignedAndEncryptedBlob.
 
Note Les erreurs des fonctions appelées CryptSignMessage et CryptEncryptMessage peuvent être propagées à cette fonction.
 

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

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

Fonctions de message simplifiées