Partager via


BCryptImportKeyPair, fonction (bcrypt.h)

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

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’algorithmes à 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 être 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
Le BLOB est une paire de clés publique/privée Diffie-Hellman BLOB. 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 Diffie-Hellman blob de clé publique. 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 publique/privée 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 1024 bits. BCRYPT_DSA_KEY_BLOB_V2 est utilisé pour les longueurs de clé qui dépassent 1024 bits, mais sont inférieures ou égales à 3072 bits.

Windows 8 : 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 1024 bits. BCRYPT_DSA_KEY_BLOB_V2 est utilisé pour les longueurs de clé qui dépassent 1024 bits, mais sont inférieures ou égales à 3072 bits.

Windows 8 : prise en charge de BCRYPT_DSA_KEY_BLOB_V2 commence.

BCRYPT_ECCPRIVATE_BLOB
L’objet BLOB est un chiffrement de courbe elliptique (ECC) clé privée. 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 n’importe quel 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 n’importe quel 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 une paire de clés publique/privée RSA. La mémoire tampon pbInput doit contenir une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données clés.
BCRYPT_RSAPUBLIC_BLOB
Le 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
Le 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 BLOB.
LEGACY_DH_PRIVATE_BLOB
L’objet BLOB est un objet blob de clé privée Diffie-Hellman version 3 héritée qui contient une paire de clés publique/privée Diffie-Hellman exportée à l’aide de CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Le BLOB est une paire de clés publique/privée DSA exportée à l’aide de CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
Le 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 BLOB.
LEGACY_DSA_V2_PRIVATE_BLOB
L’objet BLOB est une clé privée DSA version 2 dans un formulaire qui peut être importé à l’aide de CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
Le BLOB est une paire de clés publique/privée RSA qui a été exportée à l’aide de CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
Le 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 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é, telle que 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 le blob de clé à importer. Le paramètre cbInput contient la taille de cette mémoire tampon. Le paramètre pszBlobType spécifie le type de 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 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
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_LEVEL IRQL 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 page (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.

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

Voir aussi

BCryptDestroyKey

BCryptExportKey

BCryptImportKey