Partager via


BCryptVerifySignature, fonction (bcrypt.h)

La fonction BCryptVerifySignature vérifie que la signature spécifiée correspond au hachage spécifié.

Syntaxe

NTSTATUS BCryptVerifySignature(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbHash,
  [in]           ULONG             cbHash,
  [in]           PUCHAR            pbSignature,
  [in]           ULONG             cbSignature,
  [in]           ULONG             dwFlags
);

Paramètres

[in] hKey

Handle de la clé à utiliser pour déchiffrer la signature. Il doit s’agir d’une clé identique ou de la partie clé publique de la paire de clés utilisée pour signer les données avec la fonction BCryptSignHash .

[in, optional] pPaddingInfo

Pointeur vers une structure qui contient des informations de remplissage. Le type réel de structure auquel ce paramètre pointe 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.

pPaddingInfo doit être NULL pour LMS et XMSS, car aucune information supplémentaire n’est requise pour générer une signature autre que la clé et l’entrée.

[in] pbHash

Adresse d’une mémoire tampon qui contient le hachage des données. Le paramètre cbHash contient la taille de cette mémoire tampon.

[in] cbHash

Taille, en octets, de la mémoire tampon pbHash .

[in] pbSignature

Adresse d’une mémoire tampon qui contient le hachage signé des données. La fonction BCryptSignHash est utilisée pour créer la signature. Le paramètre cbSignature contient la taille de cette mémoire tampon.

[in] cbSignature

Taille, en octets, de la mémoire tampon pbSignature . La fonction BCryptSignHash est utilisée pour créer 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 .

dwFlags doit être égal à zéro pour LMS et XMSS, car aucune information supplémentaire n’est requise pour générer une signature autre que la clé et l’entrée.

Si la clé est une clé symétrique, ce paramètre n’est pas utilisé et doit être égal à zéro.

Si la clé est une clé asymétrique, il peut s’agir de l’une des valeurs suivantes :

Valeur Sens
BCRYPT_PAD_PKCS1 Le schéma de remplissage PKCS1 a été utilisé lors de la création de la signature. Le paramètre pPaddingInfo est un pointeur vers une structure BCRYPT_PKCS1_PADDING_INFO .
BCRYPT_PAD_PQDSA Utilisez le schéma de remplissage PQ pour ML-DSA ou SLH-DSA. Le paramètre pPaddingInfo est un pointeur vers une structure BCRYPT_PQDSA_PADDING_INFO .

Note: Cela doit être défini si vous utilisez une variante de ML-DSA de prédéfinie.
BCRYPT_PAD_PSS Le schéma de remplissage psS (Probabilistic Signature Scheme) a été utilisé lors de la création de la signature. Le paramètre pPaddingInfo est un pointeur vers une structure BCRYPT_PSS_PADDING_INFO .

Valeur retournée

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

Les codes de retour possibles incluent, mais ne sont pas limités, les éléments suivants :

Code de retour Descriptif
STATUS_SUCCESS La fonction a réussi.
STATUS_INVALID_SIGNATURE La signature n’a pas été vérifiée.
NTE_NO_MEMORY Un échec d’allocation de mémoire s’est produit.
STATUS_INVALID_PARAMETER L’un des paramètres fournis n’est pas valide.
STATUS_INVALID_HANDLE Le handle de clé spécifié par le paramètre hKey n’est pas valide.
STATUS_NOT_SUPPORTED Le fournisseur d’algorithmes utilisé pour créer le handle de clé spécifié par le paramètre hKey n’est pas un algorithme de signature.

Remarques

Cette fonction calcule la signature avec la clé fournie, puis compare la valeur de signature calculée à la valeur de signature spécifiée.

Pour utiliser cette fonction, vous devez hacher les données à l’aide du même algorithme de hachage utilisé pour créer la valeur de hachage qui a été signée. Le cas échéant, vous devez également spécifier le même schéma de remplissage spécifié lors de la création de la signature.

Pour ML-DSA et SLH-DSA, pbHash et cbHash n’ont pas besoin d’être des valeurs de hachage et peuvent être une entrée de longueur arbitraire.

Selon les modes processeur pris en charge par un fournisseur, BCryptVerifySignature 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 à l’aide de l’indicateur BCRYPT_PROV_DISPATCH , et tous les pointeurs passés à la fonction BCryptVerifySignature 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 de pilotes (DDK). Windows Server 2008 et Windows Vista : Pour appeler cette fonction en mode noyau, utilisez Ksecdd.lib.

Spécifications

Besoin Valeur
Client minimum requis Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | Applications UWP]
plateforme cible Fenêtres
En-tête bcrypt.h
Bibliothèque Bcrypt.lib
DLL Bcrypt.dll

Voir aussi

BCryptSignHash