Partager via


Fonction CryptEncryptMessage (wincrypt.h)

La fonction CryptEncryptMessagechiffre et encode un message.

Syntaxe

BOOL CryptEncryptMessage(
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeEncrypted,
  [in]      DWORD                       cbToBeEncrypted,
  [out]     BYTE                        *pbEncryptedBlob,
  [in, out] DWORD                       *pcbEncryptedBlob
);

Paramètres

[in] pEncryptPara

Pointeur vers une structure de CRYPT_ENCRYPT_MESSAGE_PARA qui contient les paramètres de chiffrement.

La fonction CryptEncryptMessage ne prend pas en charge les OID SHA2, les szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF et les szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF.

[in] cRecipientCert

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

[in] rgpRecipientCert

Tableau de pointeurs vers CERT_CONTEXT structures qui contiennent les certificats des destinataires prévus du message.

[in] pbToBeEncrypted

Pointeur vers une mémoire tampon qui contient le message à chiffrer.

[in] cbToBeEncrypted

Taille, en octets, du message à chiffrer.

[out] pbEncryptedBlob

Pointeur vers l’objet BLOB qui contient une mémoire tampon qui reçoit le message chiffré et encodé.

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

[in, out] pcbEncryptedBlob

Pointeur vers un DWORD qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre pbEncryptedBlob . Lorsque la fonction retourne, cette variable contient la taille, en octets, du message chiffré et encodé copié dans pbEncryptedBlob.

Note Lors du traitement des données retournées dans la mémoire tampon de pbEncryptedBlob, 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 d’appels à CryptGenKey, CryptEncrypt, CryptImportKey et CryptExportKey peuvent être propagées à cette fonction.
 
La fonction GetLastError retourne le plus souvent les codes d’erreur suivants.
Code de retour Description
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbEncryptedBlob 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 pcbEncryptedBlob.
E_INVALIDARG
Le type d’encodage de message n’est pas valide. Actuellement, seule PKCS_7_ASN_ENCODING est prise en charge. Le paramètre cbSize dans *pEncryptPara n’est 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.

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

Fonctions de message simplifiées