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 |