Partager via


Fonction DecryptMessage (Negotiate)

La fonction DecryptMessage (Negotiate) déchiffre un message. Certains packages ne chiffrent pas et déchiffrent les messages, mais exécutent et case activée un hachage d’intégrité.

Notes

EncryptMessage (Negotiate) et DecryptMessage (Negotiate) peuvent être appelés en même temps à partir de deux threads différents dans un seul contexte d’interface de fournisseur de prise en charge de la sécurité (SSPI) si un thread est en cours de chiffrement et que l’autre est en cours de déchiffrement. Si plusieurs threads sont en cours de chiffrement ou si plusieurs threads sont en cours de déchiffrement, chaque thread doit obtenir un contexte unique.

Syntaxe

SECURITY_STATUS SEC_Entry DecryptMessage(
  _In_    PCtxtHandle    phContext,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

Paramètres

phContext [in]

Handle du contexte de sécurité à utiliser pour déchiffrer le message.

pMessage [in, out]

Pointeur vers une structure SecBufferDesc . En entrée, la structure fait référence à une ou plusieurs structures SecBuffer . Au moins l’un d’entre eux doit être de type SECBUFFER_DATA. Cette mémoire tampon contient le message chiffré. Le message chiffré est déchiffré en place, ce qui remplace le contenu d’origine de sa mémoire tampon.

MessageSeqNo [in]

Numéro de séquence attendu par l’application de transport, le cas échéant. Si l’application de transport ne gère pas de numéros de séquence, ce paramètre doit être défini sur zéro.

pfQOP [out]

Pointeur vers une variable de type ULONG qui reçoit des indicateurs spécifiques au package qui indiquent la qualité de la protection.

Ce paramètre peut être l’indicateur suivant.

Valeur Signification
SECQOP_WRAP_NO_ENCRYPT
Le message n’a pas été chiffré, mais un en-tête ou une bande-annonce a été généré.
Note: KERB_WRAP_NO_ENCRYPT a la même valeur et la même signification.

Valeur retournée

Si la fonction vérifie que le message a été reçu dans l’ordre correct, la fonction retourne SEC_E_OK.

Si la fonction ne parvient pas à déchiffrer le message, elle retourne l’un des codes d’erreur suivants.

Code de retour Description
SEC_E_INCOMPLETE_MESSAGE Les données dans la mémoire tampon d’entrée sont incomplètes. L’application doit lire d’autres données à partir du serveur et appeler à nouveau DecryptMessage (Negotiate).
SEC_E_OUT_OF_SEQUENCE Le message n’a pas été reçu dans l’ordre correct.

Remarques

Parfois, une application lit les données de la partie distante, tente de les déchiffrer à l’aide de DecryptMessage (Negotiate) et découvre que DecryptMessage (Negotiate) a réussi, mais que les mémoires tampons de sortie sont vides. Il s’agit d’un comportement normal et les applications doivent être en mesure de le gérer.

Windows XP : Cette fonction était également appelée UnsealMessage. Les applications doivent désormais utiliser DecryptMessage (Negotiate) uniquement.

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]
En-tête Sspi.h (include Security.h)
Bibliothèque Secur32.lib
DLL Secur32.dll

Voir aussi