BCryptSignHash, fonction (bcrypt.h)

La fonction BCryptSignHash crée une signature d’une valeur de hachage.

Syntaxe

NTSTATUS BCryptSignHash(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbInput,
  [in]           ULONG             cbInput,
  [out]          PUCHAR            pbOutput,
  [in]           ULONG             cbOutput,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

Paramètres

[in] hKey

Handle de la clé à utiliser pour signer le hachage.

[in, optional] pPaddingInfo

Pointeur vers une structure qui contient des informations de remplissage. Le type réel de structure vers lequel pointe ce paramètre dépend de la valeur du paramètre dwFlags . Ce paramètre est utilisé uniquement avec des clés asymétriques et doit être NULL dans le cas contraire.

[in] pbInput

Pointeur vers une mémoire tampon qui contient la valeur de hachage à signer. Le paramètre cbInput contient la taille de cette mémoire tampon.

[in] cbInput

Nombre d’octets dans la mémoire tampon pbInput à signer.

[out] pbOutput

Adresse d’une mémoire tampon pour recevoir la signature produite par cette fonction. Le paramètre cbOutput contient la taille de cette mémoire tampon.

Si ce paramètre a la valeur NULL, cette fonction calcule la taille requise pour la signature et retourne la taille à l’emplacement pointé par le paramètre pcbResult .

[in] cbOutput

Taille, en octets, de la mémoire tampon pbOutput . Ce paramètre est ignoré si le paramètre pbOutput a la valeur NULL.

[out] pcbResult

Pointeur vers une variable ULONG qui reçoit le nombre d’octets copiés dans la mémoire tampon pbOutput .

Si pbOutput a la valeur NULL, il reçoit la taille, en octets, requise pour la signature.

[in] dwFlags

Ensemble d’indicateurs qui modifient le comportement de cette fonction. Le jeu d’indicateurs autorisé dépend du type de clé spécifié par le paramètre hKey .

Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
BCRYPT_PAD_PKCS1
Utilisez le schéma de remplissage PKCS1. Le paramètre pPaddingInfo est un pointeur vers une structure BCRYPT_PKCS1_PADDING_INFO .
BCRYPT_PAD_PSS
Utilisez le schéma de remplissage PSS (Probabilistic Signature Scheme). Le paramètre pPaddingInfo est un pointeur vers une structure BCRYPT_PSS_PADDING_INFO .

Valeur retournée

Retourne un code status qui indique la réussite ou l’échec de la fonction.

Les codes de retour possibles incluent, sans s’y limiter, les éléments suivants.

Code de retour Description
STATUS_SUCCESS
La fonction a réussi.
STATUS_INVALID_HANDLE
Le handle de clé spécifié par le paramètre hKey n’est pas valide.
STATUS_NOT_SUPPORTED
Le fournisseur d’algorithme utilisé pour créer le handle de clé spécifié par le paramètre hKey n’est pas un algorithme de signature.
STATUS_NO_MEMORY
Un échec d’allocation de mémoire s’est produit.
STATUS_BUFFER_TOO_SMALL
La taille de mémoire spécifiée par le paramètre cbOutput n’est pas suffisamment grande pour contenir la signature.

Remarques

Cette fonction chiffre la valeur de hachage avec la clé spécifiée pour créer la signature.

Pour vérifier ultérieurement que la signature est valide, appelez la fonction BCryptVerifySignature avec une clé identique et un hachage identique des données d’origine.

Selon les modes processeur pris en charge par un fournisseur, BCryptSignHash peut être appelé en mode utilisateur ou en mode noyau. Les appelants en mode noyau peuvent s’exécuter à PASSIVE_LEVELIRQL ou DISPATCH_LEVEL IRQL. Si le niveau IRQL actuel est DISPATCH_LEVEL, le handle fourni dans le paramètre hKey doit être dérivé d’un handle d’algorithme retourné par un fournisseur ouvert avec l’indicateur BCRYPT_PROV_DISPATCH , et tous les pointeurs passés à la fonction BCryptSignHash doivent faire référence à la mémoire non paginée (ou verrouillée).

Pour appeler cette fonction en mode noyau, utilisez Cng.lib, qui fait partie du Kit de développement pilote (DDK). Windows Server 2008 et Windows Vista : Pour appeler cette fonction en mode noyau, utilisez Ksecdd.lib.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête bcrypt.h
Bibliothèque Bcrypt.lib
DLL Bcrypt.dll

Voir aussi

BCryptVerifySignature