Fonction CryptMsgUpdate (wincrypt.h)

La fonction CryptMsgUpdate ajoute du contenu à un message de chiffrement. L’utilisation de cette fonction permet aux messages d’être construits pièce par pièce par le biais d’appels répétitifs de CryptMsgUpdate. Le contenu du message ajouté est encodé ou décodé selon que le message a été ouvert avec CryptMsgOpenToEncode ou CryptMsgOpenToDecode.

Syntaxe

BOOL CryptMsgUpdate(
  [in] HCRYPTMSG  hCryptMsg,
  [in] const BYTE *pbData,
  [in] DWORD      cbData,
  [in] BOOL       fFinal
);

Paramètres

[in] hCryptMsg

Handle de message de chiffrement du message à mettre à jour.

[in] pbData

Pointeur vers la mémoire tampon contenant les données à encoder ou décoder.

[in] cbData

Nombre d’octets de données dans la mémoire tampon pbData .

[in] fFinal

Indique que le dernier bloc de données pour l’encodage ou le décodage est en cours de traitement. L’utilisation correcte de cet indicateur dépend si le message en cours de traitement contient ou non des données détachées. L’inclusion de données détachées dans un message est indiquée en définissant dwFlags sur CMSG_DETACHED_FLAG dans l’appel à la fonction qui a ouvert le message.

Si CMSG_DETACHED_FLAG n’a pas été défini et que le message a été ouvert à l’aide de CryptMsgOpenToDecode ou de CryptMsgOpenToEncode, fFinal a la valeur TRUE et CryptMsgUpdate n’est appelé qu’une seule fois.

Si l’indicateur CMSG_DETACHED_FLAG a été défini et qu’un message est ouvert à l’aide de CryptMsgOpenToEncode, fFinal a la valeur TRUE uniquement lors du dernier appel à CryptMsgUpdate.

Si l’indicateur CMSG_DETACHED_FLAG a été défini et qu’un message est ouvert à l’aide de CryptMsgOpenToDecode, fFinal a la valeur TRUE lorsque l’en-tête est traité par un seul appel à CryptMsgUpdate. Il est défini sur FALSE lors du traitement des données détachées dans les appels suivants à CryptMsgUpdate jusqu’à ce que le dernier bloc de données détaché soit traité. Lors du dernier appel à CryptMsgUpdate, il est défini sur TRUE.

Lorsque des données détachées sont décodées, l’en-tête et le contenu d’un message sont contenus dans différents objets BLOB. Chaque objet BLOB nécessite que fFinal soit défini sur TRUE lorsque le dernier appel à la fonction est effectué pour cet objet BLOB.

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.

Les erreurs rencontrées dans la fonction de rappel définie par l’application spécifiée par pStreamInfo dans CryptMsgOpenToDecode et CryptMsgOpenToEncode peuvent être propagées vers CryptMsgUpdate si la diffusion en continu est utilisée. Si cela se produit, SetLastError n’est pas appelé par CryptMsgUpdate après le retour de la fonction de rappel, ce qui préserve les erreurs rencontrées sous le contrôle de l’application. Il incombe à la fonction de rappel (ou à l’une des API qu’elle appelle) d’appeler SetLastError si une erreur se produit pendant que l’application traite les données diffusées.

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

Code de retour Description
CRYPT_E_INVALID_MSG_TYPE
Le type de message n'est pas valide.
CRYPT_E_MSG_ERROR
Une erreur s’est produite lors d’une opération de chiffrement.
CRYPT_E_OID_FORMAT
L’identificateur d’objet est mal mis en forme.
CRYPT_E_UNEXPECTED_ENCODING
Le message n’est pas encodé comme prévu.
CRYPT_E_UNKNOWN_ALGO
L’algorithme de chiffrement est inconnu.
E_INVALIDARG
Un ou plusieurs arguments ne sont pas valides.
E_OUTOFMEMORY
Nous avons manqué de mémoire.
 

Des erreurs propagées peuvent être rencontrées à partir de l’une des fonctions suivantes :

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 | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

CryptMsgGetParam

CryptMsgOpenToDecode

CryptMsgOpenToEncode

Fonctions de message de bas niveau

Fonctions de message simplifiées