BCryptDuplicateKey, fonction (bcrypt.h)

La fonction BCryptDuplicateKey crée un doublon d’une clé symétrique.

Syntaxe

NTSTATUS BCryptDuplicateKey(
  [in]  BCRYPT_KEY_HANDLE hKey,
  [out] BCRYPT_KEY_HANDLE *phNewKey,
  [out] PUCHAR            pbKeyObject,
  [in]  ULONG             cbKeyObject,
  [in]  ULONG             dwFlags
);

Paramètres

[in] hKey

Handle de la clé à dupliquer. Il doit s’agir d’un handle pour une clé symétrique.

[out] phNewKey

Pointeur vers une variable BCRYPT_KEY_HANDLE qui reçoit le handle de la clé en double. Ce handle est utilisé dans les fonctions suivantes qui nécessitent une clé, comme BCryptEncrypt. Ce handle doit être libéré lorsqu’il n’est plus nécessaire en le transmettant à la fonction BCryptDestroyKey .

[out] pbKeyObject

Pointeur vers une mémoire tampon qui reçoit l’objet de clé en double. Le paramètre cbKeyObject contient la taille de cette mémoire tampon. La taille requise de cette mémoire tampon peut être obtenue en appelant la fonction BCryptGetProperty pour obtenir la propriété BCRYPT_OBJECT_LENGTH . Cela fournit la taille de l’objet clé pour l’algorithme spécifié.

Cette mémoire ne peut être libérée qu’après la destruction du handle de clé phNewKey .

[in] cbKeyObject

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

[in] dwFlags

Ensemble d’indicateurs qui modifient le comportement de cette fonction. Aucun indicateur n’étant actuellement défini, ce paramètre doit être égal à zéro.

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_BUFFER_TOO_SMALL
La taille de l’objet key spécifié par le paramètre cbKeyObject n’est pas suffisamment grande pour contenir l’objet key.
STATUS_INVALID_HANDLE
Le handle de clé dans le paramètre hKey n’est pas valide. Cette valeur est également retournée si la clé à dupliquer n’est pas une clé symétrique.
STATUS_INVALID_PARAMETER
Un ou plusieurs paramètres ne sont pas valides.

Remarques

Selon les modes processeur pris en charge par un fournisseur, BCryptDuplicateKey peut être appelé à partir du mode utilisateur ou du 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 qui a été ouvert avec l’indicateur BCRYPT_PROV_DISPATCH , et tous les pointeurs passés à la fonction BCryptDuplicateKey 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.

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