Partager via


Fonction DecryptMessage (Negotiate)

La fonction DecryptMessage (Negotiate) déchiffre un message. Certains packages ne chiffrent pas et déchiffrent les messages, mais effectuent et vérifient plutôt un hachage d’intégrité.

Remarque

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 support de sécurité (SSPI) si un thread chiffre et que l’autre déchiffre. Si plusieurs threads chiffrent ou plusieurs threads sont déchiffrés, 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 [dans]

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

pMessage [entrée, sortie]

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, en remplaçant le contenu d’origine de sa mémoire tampon.

MessageSeqNo [dans]

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

pfQOP [sortie]

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 Sens
SECQOP_WRAP_NO_ENCRYPT
Le message n’a pas été chiffré, mais un en-tête ou une bande-annonce a été produit.
Note: KERB_WRAP_NO_ENCRYPT a la même valeur et la même signification.

Valeur de retour

Si la fonction vérifie que le message a été reçu dans la séquence correcte, 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 Descriptif
SEC_E_INCOMPLETE_MESSAGE Les données de la mémoire tampon d’entrée sont incomplètes. L’application doit lire davantage de données à partir du serveur et appeler à nouveau DecryptMessage (Negotiate).
SEC_E_OUT_OF_SEQUENCE Le message n’a pas été reçu dans la séquence correcte.

Remarques

Parfois, une application lit les données de la partie distante, tente de la 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 les traiter.

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

Spécifications

Besoin Valeur
Client minimum pris en charge Windows XP [applications de bureau uniquement]
Serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête de page Sspi.h (inclure Security.h)
Bibliothèque Secur32.lib
DLL Secur32.dll

Voir aussi