EncryptMessage, fonction (sspi.h)
La fonction EncryptMessage (Digest) chiffre un message pour assurer la confidentialité. EncryptMessage (Digest) permet à l’application de choisir parmi les algorithmes de chiffrement pris en charge par le mécanisme choisi. La fonction EncryptMessage (Digest) utilise le contexte de sécurité référencé par le handle de contexte. Certains packages n’ont pas de messages à chiffrer ou à déchiffrer, mais fournissent plutôt un hachage d’intégrité qui peut être vérifié.
Cette fonction est disponible en tant que mécanisme SASL uniquement.
Syntaxe
SECURITY_STATUS SEC_ENTRY EncryptMessage(
[in] PCtxtHandle phContext,
[in] unsigned long fQOP,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo
);
Paramètres
[in] phContext
Handle du contexte de sécurité à utiliser pour chiffrer le message.
[in] fQOP
Indicateurs spécifiques au package qui indiquent la qualité de la protection. Un package de sécurité peut utiliser ce paramètre pour activer la sélection d’algorithmes de chiffrement.
Lorsque vous utilisez le fournisseur de services partagés Digest, ce paramètre doit être défini sur zéro.
[in, out] pMessage
Pointeur vers une structure SecBufferDesc . En entrée, la structure fait référence à une ou plusieurs structures SecBuffer qui peuvent être de type SECBUFFER_DATA. Cette mémoire tampon contient le message à chiffrer. Le message est chiffré sur place, remplaçant le contenu d’origine de la structure.
La fonction ne traite pas les mémoires tampons avec l’attribut SECBUFFER_READONLY.
La longueur de la structure SecBuffer qui contient le message ne doit pas être supérieure à cbMaximumMessage, obtenue à partir de la fonction QueryContextAttributes (Digest) (SECPKG_ATTR_STREAM_SIZES).
Lors de l’utilisation du SSP Digest, il doit y avoir une deuxième mémoire tampon de type SECBUFFER_PADDING ou SEC_BUFFER_DATA pour contenir les informations de signature . Pour obtenir la taille de la mémoire tampon de sortie, appelez la fonction QueryContextAttributes (Digest) et spécifiez SECPKG_ATTR_SIZES. La fonction retourne une structure SecPkgContext_Sizes . La taille de la mémoire tampon de sortie est la somme des valeurs dans les membres cbMaxSignature et cbBlockSize .
Les applications qui n’utilisent pas SSL doivent fournir un SecBuffer de type SECBUFFER_PADDING.
[in] MessageSeqNo
Numéro de séquence que l’application de transport a affecté au message. Si l’application de transport ne gère pas les numéros de séquence, ce paramètre doit être égal à zéro.
Lorsque vous utilisez le fournisseur de services partagés Digest, ce paramètre doit être défini sur zéro. Le SSP Digest gère la numérotation des séquences en interne.
Valeur retournée
Si la fonction réussit, la fonction retourne SEC_E_OK.
Si la fonction échoue, elle retourne l’un des codes d’erreur suivants.
Code de retour | Description |
---|---|
|
La mémoire tampon de sortie est trop petite. Pour plus d'informations, consultez la section Notes. |
|
L’application fait référence à un contexte qui a déjà été fermé. Une application correctement écrite ne doit pas recevoir cette erreur. |
|
Le chiffrement choisi pour le contexte de sécurité n’est pas pris en charge. |
|
La mémoire disponible est insuffisante pour effectuer l’action demandée. |
|
Un handle de contexte non valide a été spécifié dans le paramètre phContext . |
|
Aucune mémoire tampon de type SECBUFFER_DATA n’a été trouvée. |
|
Ni la confidentialité ni l’intégrité ne sont prises en charge par le contexte de sécurité. |
Remarques
La fonction EncryptMessage (Digest) chiffre un message en fonction du message et de la clé de session à partir d’un contexte de sécurité.
Si l’application de transport a créé le contexte de sécurité pour prendre en charge la détection de séquence et que l’appelant fournit un numéro de séquence, la fonction inclut ces informations avec le message chiffré. L’inclusion de ces informations protège contre la relecture, l’insertion et la suppression des messages. Le package de sécurité intègre le numéro de séquence transmis à partir de l’application de transport.
Lorsque vous utilisez le fournisseur de services partagés Digest, obtenez la taille de la mémoire tampon de sortie en appelant la fonction QueryContextAttributes (Digest) et en spécifiant SECPKG_ATTR_SIZES. La fonction retourne une structure SecPkgContext_Sizes . La taille de la mémoire tampon de sortie est la somme des valeurs dans les membres cbMaxSignature et cbBlockSize .
Type de mémoire tampon | Description |
---|---|
SECBUFFER_STREAM_HEADER | Utilisé en interne. Aucune initialisation n’est requise. |
SECBUFFER_DATA | Contient le message en texte clair à chiffrer. |
SECBUFFER_STREAM_TRAILER | Utilisé en interne. Aucune initialisation n’est requise. |
SECBUFFER_EMPTY | Utilisé en interne. Aucune initialisation n’est requise. La taille peut être égale à zéro. |
Pour des performances optimales, les structures pMessage doivent être allouées à partir de la mémoire contiguë.
Windows XP : Cette fonction était également appelée SealMessage. Les applications doivent désormais utiliser EncryptMessage (Digest) uniquement.
Configuration requise
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 | sspi.h (include Security.h) |
Bibliothèque | Secur32.lib |
DLL | Secur32.dll |
Voir aussi
AcceptSecurityContext (Digest)
InitializeSecurityContext (Digest)