BCryptOpenAlgorithmProvider, fonction (bcrypt.h)
La fonction BCryptOpenAlgorithmProvider charge et initialise un fournisseur CNG.
Syntaxe
NTSTATUS BCryptOpenAlgorithmProvider(
[out] BCRYPT_ALG_HANDLE *phAlgorithm,
[in] LPCWSTR pszAlgId,
[in] LPCWSTR pszImplementation,
[in] ULONG dwFlags
);
Paramètres
[out] phAlgorithm
Pointeur vers une variable BCRYPT_ALG_HANDLE qui reçoit le handle du fournisseur CNG. Lorsque vous avez terminé d’utiliser ce handle, relâchez-le en le transmettant à la fonction BCryptCloseAlgorithmProvider.
[in] pszAlgId
Pointeur vers une chaîne Unicode terminée par null qui identifie l’algorithme de chiffrement demandé. Il peut s’agir de l’un des identificateurs d’algorithme CNG standard ou de l’identificateur d’un autre algorithme inscrit.
[in] pszImplementation
Pointeur vers une chaîne Unicode terminée par null qui identifie le fournisseur spécifique à charger. Il s’agit de l’alias inscrit du fournisseur de primitives de chiffrement. Ce paramètre est facultatif et peut être NULL s’il n’est pas nécessaire. Si ce paramètre est NULL, le fournisseur par défaut de l’algorithme spécifié est chargé.
Voici les noms de fournisseurs prédéfinis.
[in] dwFlags
Indicateurs qui modifient le comportement de la fonction. Il peut s’agir de zéro ou d’une combinaison d’une ou plusieurs des valeurs suivantes.
Valeur | Signification |
---|---|
|
Le fournisseur effectue l’algorithme Hash-Based code d’authentification de message (HMAC) avec l’algorithme de hachage spécifié. Cet indicateur est utilisé uniquement par les fournisseurs d’algorithmes de hachage. |
|
Charge le fournisseur dans le pool de mémoires non paginés. Si cet indicateur n’est pas présent, le fournisseur est chargé dans le pool de mémoire paginé. Lorsque cet indicateur est spécifié, le handle retourné ne doit pas être fermé avant que tous les objets dépendants aient été libérés.
Remarque Cet indicateur est uniquement pris en charge en mode noyau et permet aux opérations suivantes sur le fournisseur d’être traitées au niveau dispatch. Si le fournisseur ne prend pas en charge l’appel au niveau de répartition, il retourne une erreur lors de l’ouverture à l’aide de cet indicateur.
|
|
Crée un objet de hachage réutilisable. L’objet peut être utilisé pour une nouvelle opération de hachage immédiatement après avoir appelé BCryptFinishHash. Pour plus d’informations, consultez Création d’un hachage avec CNG.
Windows Server 2008 R2, Windows 7, Windows Server 2008 et Windows Vista : cet indicateur n’est pas pris en charge. |
Valeur de retour
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.
Retourner le code | Description |
---|---|
|
La fonction a réussi. |
|
Aucun fournisseur n’a été trouvé pour l’ID d’algorithme spécifié. |
|
Un ou plusieurs paramètres ne sont pas valides. |
|
Un échec d’allocation de mémoire s’est produit. |
Remarques
En raison du nombre et du type d’opérations nécessaires pour rechercher, charger et initialiser un fournisseur d’algorithmes, la fonction BCryptOpenAlgorithmProvider est une fonction relativement longue. En raison de cela, nous vous recommandons de mettre en cache tous les handles de fournisseur d’algorithmes que vous utiliserez plusieurs fois, plutôt que d’ouvrir et de fermer les fournisseurs d’algorithmes sur et plus.
BCryptOpenAlgorithmProvider peut être appelé en mode utilisateur ou en mode noyau. Les appelants en mode noyau doivent s’exécuter à PASSIVE_LEVELIRQL.
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.
À compter de Windows 10, CNG ne suit plus chaque mise à jour de la configuration de chiffrement. Certaines modifications, telles que l’ajout d’un nouveau fournisseur par défaut ou la modification de l’ordre de préférence des fournisseurs d’algorithmes, peuvent nécessiter un redémarrage. Pour cette raison, vous devez redémarrer avant d’appeler BCryptOpenAlgorithmProvider avec n’importe quel fournisseur nouvellement configuré.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Vista [applications de bureau | Applications UWP] |
serveur minimum pris en charge | Windows Server 2008 [applications de bureau | Applications UWP] |
plateforme cible | Windows |
d’en-tête | bcrypt.h |
bibliothèque | Bcrypt.lib |
DLL | Bcrypt.dll |