BCryptImportKey, fonction (bcrypt.h)

La fonction BCryptImportKey importe une clé symétrique à partir d’un objet BLOB de clé. La fonction BCryptImportKeyPair est utilisée pour importer une paire de clés publique/privée.

Syntaxe

NTSTATUS BCryptImportKey(
  [in]            BCRYPT_ALG_HANDLE hAlgorithm,
  [in, optional]  BCRYPT_KEY_HANDLE hImportKey,
  [in]            LPCWSTR           pszBlobType,
  [out]           BCRYPT_KEY_HANDLE *phKey,
  [out, optional] PUCHAR            pbKeyObject,
  [in]            ULONG             cbKeyObject,
  [in]            PUCHAR            pbInput,
  [in]            ULONG             cbInput,
  [in]            ULONG             dwFlags
);

Paramètres

[in] hAlgorithm

Handle du fournisseur d’algorithme pour importer la clé. Ce handle est obtenu en appelant la fonction BCryptOpenAlgorithmProvider .

[in, optional] hImportKey

Handle de la clé de chiffrement de clé nécessaire pour désencapsuler l’objet BLOB de clé dans le paramètre pbInput .

Note Le handle doit être fourni par le même fournisseur que celui qui a fourni la clé en cours d’importation.

 

Windows Server 2008 et Windows Vista : Ce paramètre n’est pas utilisé et doit être défini sur NULL.

[in] pszBlobType

Chaîne Unicode terminée par un caractère Null qui contient un identificateur qui spécifie le type d’objet BLOB contenu dans la mémoire tampon pbInput . Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
BCRYPT_AES_WRAP_KEY_BLOB
Importez une clé symétrique à partir d’un objet BLOB de clé encapsulée de clé AES. Le paramètre hImportKey doit référencer un pointeur BCRYPT_KEY_HANDLE valide vers la clé de chiffrement de clé.

Windows Server 2008 et Windows Vista : Ce type d’objet BLOB n’est pas pris en charge.

BCRYPT_KEY_DATA_BLOB
Importer une clé symétrique à partir d’un objet BLOB de données. Le paramètre pbInput est un pointeur vers une structure BCRYPT_KEY_DATA_BLOB_HEADER immédiatement suivie de l’objet BLOB clé.
BCRYPT_OPAQUE_KEY_BLOB
Importez un objet BLOB de clé symétrique dans un format spécifique à un seul fournisseur de solutions Cloud. Les objets BLOB opaques ne sont pas transférables et doivent être importés à l’aide du fournisseur de solutions Cloud qui a généré l’objet BLOB. Les objets BLOB opaques sont uniquement destinés à être utilisés pour le transfert interprocessus de clés et ne conviennent pas pour être conservés et lus entre les versions d’un fournisseur.

[out] phKey

Pointeur vers un BCRYPT_KEY_HANDLE qui reçoit le handle de la clé importée. 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, optional] pbKeyObject

Pointeur vers une mémoire tampon qui reçoit l’objet de clé importé. 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é phKey .

[in] cbKeyObject

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

[in] pbInput

Adresse d’une mémoire tampon qui contient l’objet BLOB clé à importer. Le paramètre cbInput contient la taille de cette mémoire tampon. Le paramètre pszBlobType spécifie le type de clé BLOB que contient cette mémoire tampon.

[in] cbInput

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

[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 d’algorithme dans le paramètre hAlgorithm n’est pas valide.
STATUS_INVALID_PARAMETER
Un ou plusieurs paramètres ne sont pas valides.
STATUS_NOT_SUPPORTED
Le fournisseur d’algorithme spécifié par le paramètre hAlgorithm ne prend pas en charge le type BLOB spécifié par le paramètre pszBlobType .

Remarques

Selon les modes de processeur pris en charge par un fournisseur, BCryptImportKey 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 hAlgorithm doit avoir été ouvert à l’aide de l’indicateur BCRYPT_PROV_DISPATCH , et tous les pointeurs passés à la fonction BCryptImportKey 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

Voir aussi

BCryptDestroyKey

BCryptExportKey

BCryptImportKeyPair