Partager via


Fonction MakeSignature (sspi.h)

La fonction MakeSignature génère une somme de contrôle de chiffrement du message et inclut également des informations de séquencement pour empêcher la perte ou l’insertion du message. MakeSignature permet à l’application de choisir entre plusieurs algorithmes de chiffrement, s’il est pris en charge par le mécanisme choisi. La fonction MakeSignature utilise le contexte de sécurité référencé par le handle de contexte.

Cette fonction n’est pas prise en charge par le fournisseur de support de sécurité (SSP) Schannel.

Syntaxe

KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
  [in]      PCtxtHandle    phContext,
  [in]      unsigned long  fQOP,
  [in, out] PSecBufferDesc pMessage,
  [in]      unsigned long  MessageSeqNo
);

Paramètres

[in] phContext

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

[in] fQOP

Indicateurs spécifiques au package qui indiquent la qualité de la protection. Un package de sécurité peut utiliser ce paramètre pour permettre la sélection d’algorithmes de chiffrement.

Lorsque vous utilisez le fournisseur de services partagés Digest, ce paramètre doit être défini sur zéro.

[in, out] pMessage

Pointeur vers une structure SecBufferDesc . En entrée, la structure fait référence à une ou plusieurs structures SecBuffer qui contiennent le message à signer. La fonction ne traite pas les mémoires tampons avec l’attribut SECBUFFER_READONLY_WITH_CHECKSUM.

La structure SecBufferDesc fait également référence à une structure SecBuffer de type SECBUFFER_TOKEN qui reçoit la signature.

Lorsque le fournisseur SSP Digest est utilisé comme protocole d’authentification HTTP, les mémoires tampons doivent être configurées comme suit.

Type de mémoire tampon #/tampon Signification
0
SECBUFFER_TOKEN
Vide.
1
SECBUFFER_PKG_PARAMS
Méthode.
2
SECBUFFER_PKG_PARAMS
URL.
3
SECBUFFER_PKG_PARAMS
HEntity. Pour plus d’informations, consultez Mémoires tampons d’entrée pour la réponse au défi digest.
4
SECBUFFER_PADDING
Vide. Reçoit la signature.
 

Lorsque le fournisseur de services partagé Digest est utilisé comme mécanisme SASL, les mémoires tampons doivent être configurées comme suit.

Type de mémoire tampon #/tampon Signification
0
SECBUFFER_TOKEN
Vide. Reçoit la signature. Cette mémoire tampon doit être suffisamment grande pour contenir la plus grande signature possible. Déterminez la taille requise en appelant la fonction QueryContextAttributes (Général) et en spécifiant SECPKG_ATTR_SIZES. Vérifiez le membre de structure de SecPkgContext_Sizes retourné cbMaxSignature.
1
SECBUFFER_DATA
Message à signer.
2
SECBUFFER_PADDING
Vide.

[in] MessageSeqNo

Numéro de séquence que l’application de transport a attribué au message. Si l’application de transport ne gère pas les numéros de séquence, ce paramètre est égal à 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.

Valeur retournée

Si la fonction réussit, la fonction retourne SEC_E_OK.

Si la fonction échoue, elle retourne l’un des codes d’erreur suivants.

Code de retour Description
SEC_I_RENEGOTIATE
La partie distante nécessite une nouvelle séquence de négociation ou l’application vient de lancer un arrêt. Revenez à la boucle de négociation et appelez à nouveau AcceptSecurityContext (Général) ou InitializeSecurityContext (Général). Une mémoire tampon d’entrée vide est passée dans le premier appel.
SEC_E_INVALID_HANDLE
Le handle de contexte spécifié par phContext n’est pas valide.
SEC_E_INVALID_TOKEN
pMessage ne contenait pas de mémoire tampon SECBUFFER_TOKEN valide ou contenait trop peu de mémoires tampons.
SEC_E_OUT_OF_SEQUENCE
Le nombre de nonces est hors séquence.
SEC_E_NO_AUTHENTICATING_AUTHORITY
Le contexte de sécurité (phContext) doit être revalidé.
STATUS_INVALID_PARAMETER
Le nombre de nonces n’est pas numérique.
SEC_E_QOP_NOT_SUPPORTED
La qualité de la protection négociée entre le client et le serveur n’incluait pas la vérification de l’intégrité .

Remarques

La fonction MakeSignature génère une signature basée sur le message et la clé de session pour le contexte.

La fonction VerifySignature vérifie les messages signés par la fonction MakeSignature .

Si l’application de transport a créé le contexte de sécurité pour prendre en charge la détection de séquence et que l’appelant fournit un numéro de séquence, la fonction inclut ces informations dans la signature. Cela protège contre la réponse, l’insertion et la suppression de messages. Le package de sécurité incorpore le numéro de séquence transmis à partir de l’application de transport.

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

Voir aussi

Fonctions SSPI

SecBuffer

SecBufferDesc

VerifySignature