Fonction DecryptMessage (sspi.h)
La fonction DecryptMessage (Digest) 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é.
Le fournisseur de support de sécurité Digest fournit le chiffrement et la confidentialité du déchiffrement pour les messages échangés entre le client et le serveur en tant que mécanisme SASL uniquement.
Syntaxe
SECURITY_STATUS SEC_ENTRY DecryptMessage(
[in] PCtxtHandle phContext,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo,
[out] unsigned long *pfQOP
);
Paramètres
[in] phContext
Handle du contexte de sécurité à utiliser pour déchiffrer le message.
[in, out] pMessage
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.
Lors de l’utilisation du fournisseur de services partagé Digest, en entrée, la structure fait référence à une ou plusieurs structures SecBuffer . L’un d’eux doit être de type SECBUFFER_DATA ou SECBUFFER_STREAM, et il doit contenir le message chiffré.
[in] MessageSeqNo
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.
Lorsque vous utilisez le fournisseur de services partagés Digest, ce paramètre doit être défini sur zéro. Le fournisseur de services partagés Digest gère la numérotation des séquences en interne.
[out] pfQOP
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’un des indicateurs suivants.
Valeur | Signification |
---|---|
|
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.
|
|
Lorsque vous utilisez le fournisseur de services partagés Digest, utilisez cet indicateur lorsque le contexte de sécurité est défini pour vérifier la signature uniquement. Pour plus d’informations, consultez Qualité de la protection. |
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 |
---|---|
|
La mémoire tampon de message est trop petite. Utilisé avec le fournisseur de services partagé Digest. |
|
Le chiffrement choisi pour le contexte de sécurité n’est pas pris en charge. Utilisé avec le fournisseur de services partagé Digest. |
|
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 (Digest). |
|
Un handle de contexte non valide a été spécifié dans le paramètre phContext . Utilisé avec le fournisseur de services partagé Digest. |
|
Le message a été modifié. Utilisé avec le fournisseur de services partagé Digest. |
|
Le message n’a pas été reçu dans l’ordre correct. |
|
Ni la confidentialité ni l’intégrité ne sont prises en charge par le contexte de sécurité. Utilisé avec le fournisseur de services partagé Digest. |
Remarques
Parfois, une application lit les données de la partie distante, tente de les déchiffrer à l’aide de DecryptMessage (Digest) et découvre que DecryptMessage (Digest) 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 (Digest) 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] |
Plateforme cible | Windows |
En-tête | sspi.h (include Security.h) |
Bibliothèque | Secur32.lib |
DLL | Secur32.dll |