Partager via


Fonction DecryptMessage (Digest)

La fonction DecryptMessage (Digest) 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é.

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.

Remarque

EncryptMessage (Digest) et DecryptMessage (Digest) peuvent être appelés en même temps à partir de deux threads différents dans un contexte SSPI ( Security Support Provider Interface ) unique si un thread est chiffré 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(
  PCtxtHandle    phContext,
  PSecBufferDesc pMessage,
  unsigned long  MessageSeqNo,
  unsigned long  *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 . Lors de l’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.

Lorsque vous utilisez le SSP 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é.

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.

Lors de l’utilisation du SSP Digest, ce paramètre doit être défini sur zéro. Le SSP Digest gère la numérotation séquentielle en interne.

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’un des indicateurs suivants.

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.
SIGN_ONLY
Lorsque vous utilisez le SSP 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 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_BUFFER_TOO_SMALL La mémoire tampon de message est trop petite. Utilisé avec le SSP Digest.
SEC_E_CRYPTO_SYSTEM_INVALID Le chiffrement choisi pour le contexte de sécurité n’est pas pris en charge. Utilisé avec le SSP Digest.
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 (Digest).
SEC_E_INVALID_HANDLE Un handle de contexte qui n’est pas valide a été spécifié dans le paramètre phContext . Utilisé avec le SSP Digest.
SEC_E_MESSAGE_ALTERED Le message a été modifié. Utilisé avec le SSP Digest.
SEC_E_OUT_OF_SEQUENCE Le message n’a pas été reçu dans la séquence correcte.
SEC_E_QOP_NOT_SUPPORTED Ni la confidentialité ni l’intégrité ne sont prises en charge par le contexte de sécurité. Utilisé avec le SSP Digest.

Remarques

Parfois, une application lit les données du tiers distant, tente de le 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 les traiter.

Windows XP : Cette fonction était également appelée UnsealMessage. Les applications doivent désormais utiliser DecryptMessage (Digest) 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