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 |
---|---|
|
Le type de message n'est pas valide. |
|
Une erreur s’est produite lors d’une opération de chiffrement. |
|
L’identificateur d’objet est mal mis en forme. |
|
Le message n’est pas encodé comme prévu. |
|
L’algorithme de chiffrement est inconnu. |
|
Un ou plusieurs arguments ne sont pas valides. |
|
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 |