BCryptImportKeyPair, fonction (bcrypt.h)

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

Syntaxe

NTSTATUS BCryptImportKeyPair(
  [in]      BCRYPT_ALG_HANDLE hAlgorithm,
  [in, out] BCRYPT_KEY_HANDLE hImportKey,
  [in]      LPCWSTR           pszBlobType,
  [out]     BCRYPT_KEY_HANDLE *phKey,
  [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, out] hImportKey

Ce paramètre n’est actuellement pas utilisé et doit avoir la valeur NULL.

[in] pszBlobType

Chaîne Unicode terminée par 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_DH_PRIVATE_BLOB
L’objet BLOB est un objet BLOB Diffie-Hellman paire de clés publique/privée. La mémoire tampon pbInput doit contenir une structure BCRYPT_DH_KEY_BLOB immédiatement suivie des données clés.
BCRYPT_DH_PUBLIC_BLOB
L’objet BLOB est un objet BLOB de clé publique Diffie-Hellman. La mémoire tampon pbInput doit contenir une structure BCRYPT_DH_KEY_BLOB immédiatement suivie des données clés.
BCRYPT_DSA_PRIVATE_BLOB
L’objet BLOB est une paire de clés publiques/privées DSA. La mémoire tampon pbInput doit contenir une structure BCRYPT_DSA_KEY_BLOB ou BCRYPT_DSA_KEY_BLOB_V2 immédiatement suivie des données clés. BCRYPT_DSA_KEY_BLOB est utilisé pour les longueurs de clé comprises entre 512 et 1 024 bits. BCRYPT_DSA_KEY_BLOB_V2 est utilisé pour les longueurs de clé supérieures à 1 024 bits, mais inférieures ou égales à 3 072 bits.

Windows 8 : la prise en charge de BCRYPT_DSA_KEY_BLOB_V2 commence.

BCRYPT_DSA_PUBLIC_BLOB
L’objet BLOB est un objet BLOB de clé publique DSA. La mémoire tampon pbInput doit contenir une structure BCRYPT_DSA_KEY_BLOB ou BCRYPT_DSA_KEY_BLOB_V2 immédiatement suivie des données clés. BCRYPT_DSA_KEY_BLOB est utilisé pour les longueurs de clé comprises entre 512 et 1 024 bits. BCRYPT_DSA_KEY_BLOB_V2 est utilisé pour les longueurs de clé supérieures à 1 024 bits, mais inférieures ou égales à 3 072 bits.

Windows 8 : la prise en charge de BCRYPT_DSA_KEY_BLOB_V2 commence.

BCRYPT_ECCPRIVATE_BLOB
L’objet BLOB est une clé privée ECC (Elliptic Curve Cryptography). La mémoire tampon pbInput doit contenir une structure BCRYPT_ECCKEY_BLOB immédiatement suivie des données clés.
BCRYPT_ECCPUBLIC_BLOB
L’objet BLOB est une clé publique ECC. La mémoire tampon pbInput doit contenir une structure BCRYPT_ECCKEY_BLOB immédiatement suivie des données clés.
BCRYPT_PUBLIC_KEY_BLOB
L’objet BLOB est une clé publique générique de tout type. Le type de clé dans cet objet BLOB est déterminé par le membre Magic de la structure BCRYPT_KEY_BLOB .
BCRYPT_PRIVATE_KEY_BLOB
L’objet BLOB est une clé privée générique de tout type. La clé privée ne contient pas nécessairement la clé publique. Le type de clé dans cet objet BLOB est déterminé par le membre Magic de la structure BCRYPT_KEY_BLOB .
BCRYPT_RSAPRIVATE_BLOB
L’objet BLOB est un objet BLOB de paire de clés publiques/privées RSA. La mémoire tampon pbInput doit contenir une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données clés.
BCRYPT_RSAPUBLIC_BLOB
L’objet BLOB est un objet BLOB de clé publique RSA. La mémoire tampon pbInput doit contenir une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données clés.
LEGACY_DH_PUBLIC_BLOB
L’objet BLOB est un objet BLOB de clé publique Diffie-Hellman qui a été exporté à l’aide de CryptoAPI. Le fournisseur primitif Microsoft ne prend pas en charge l’importation de ce type d’objet BLOB.
LEGACY_DH_PRIVATE_BLOB
L’objet BLOB est un objet BLOB de clé privée Diffie-Hellman version 3 hérité qui contient une Diffie-Hellman paire de clés publique/privée qui a été exportée à l’aide de CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
L’objet BLOB est un objet BLOB de paire de clés publiques/privées DSA qui a été exporté à l’aide de CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
L’objet BLOB est un objet BLOB de clé publique DSA qui a été exporté à l’aide de CryptoAPI. Le fournisseur primitif Microsoft ne prend pas en charge l’importation de ce type d’objet BLOB.
LEGACY_DSA_V2_PRIVATE_BLOB
L’objet BLOB est une clé privée DSA version 2 sous une forme qui peut être importée à l’aide de CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
L’objet BLOB est un objet BLOB de paire de clés publiques/privées RSA qui a été exporté à l’aide de CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
L’objet BLOB est un objet BLOB de clé publique RSA qui a été exporté à l’aide de CryptoAPI. Le fournisseur primitif Microsoft ne prend pas en charge l’importation de ce type d’objet BLOB.

[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 BCryptSignHash. Ce handle doit être libéré lorsqu’il n’est plus nécessaire en le transmettant à la fonction BCryptDestroyKey .

[in] pbInput

Adresse d’une mémoire tampon qui contient la clé BLOB à importer. Le paramètre cbInput contient la taille de cette mémoire tampon. Le paramètre pszBlobType spécifie le type d’objet BLOB de clé 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. Il peut s’agir de zéro ou de la valeur suivante.

Valeur Signification
BCRYPT_NO_KEY_VALIDATION
Ne validez pas la partie publique de la paire de clés.

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 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’algorithmes 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, BCryptImportKeyPair 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 hAlgorithm doit avoir été ouvert à l’aide de l’indicateur BCRYPT_PROV_DISPATCH , et tous les pointeurs passés à la fonction BCryptImportKeyPair 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

BCryptDestroyKey

BCryptExportKey

BCryptImportKey