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 : 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 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 : La 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_MLKEM_PUBLIC_BLOB Le BLOB est un objet BLOB ML-KEM qui fournit l’importation et l’exportation de clés d’encapsulation codées en octets standard ML-KEM par FIPS 203. La mémoire tampon pbInput doit contenir une structure BCRYPT_MLKEM_KEY_BLOB contenant la clé d’encapsulation KEM codée en octets, BCRYPT_MLKEM_PUBLIC_MAGIC et ML-KEM jeu de paramètres.
BCRYPT_MLKEM_PRIVATE_BLOB L’objet BLOB est un objet blob ML-KEM qui fournit l’importation et l’exportation de clés de décapsulation codées en octets standard ML-KEM par FIPS 203. La mémoire tampon pbInput doit contenir une structure BCRYPT_MLKEM_KEY_BLOB contenant la clé de décapsulation KEM codée en octets, BCRYPT_MLKEM_PRIVATE_MAGIC et ML-KEM jeu de paramètres.
BCRYPT_MLKEM_PRIVATE_SEED_BLOB Le BLOB est un objet blob ML-KEM qui fournit l’importation et l’exportation de graines de ML-KEM par FIPS 203. La mémoire tampon pbInput doit contenir une structure BCRYPT_MLKEM_KEY_BLOB contenant le jeu de paramètres KEM seed, BCRYPT_MLKEM_SEED_MAGIC et ML-KEM.
BCRYPT_PQDSA_PUBLIC_BLOB L’objet BLOB est un objet BLOB ML-DSA, SLH-DSA, LMS ou XMSS qui fournit l’importation et l’exportation de clés publiques de signature numérique PQ par FIPS 204 et 205. La mémoire tampon pbInput doit contenir une structure BCRYPT_PQDSA_KEY_BLOB contenant le matériel clé, la magie publique et le jeu de paramètres PQ.
BCRYPT_PQDSA_PRIVATE_BLOB L’objet BLOB est un objet BLOB ML-DSA, SLH-DSA, LMS ou XMSS qui fournit l’importation et l’exportation de clés privées de signature numérique PQ par FIPS 204 et 205. La mémoire tampon pbInput doit contenir une structure BCRYPT_PQDSA_KEY_BLOB contenant le matériel clé, la magie privée et le jeu de paramètres PQ.
BCRYPT_PQDSA_PRIVATE_SEED_BLOB L’objet BLOB est un objet BLOB ML-DSA, SLH-DSA, LMS ou XMSS qui fournit l’importation et l’exportation de graines privées de signature numérique PQ par FIPS 204 et 205. La mémoire tampon pbInput doit contenir une structure BCRYPT_PQDSA_KEY_BLOB contenant la valeur initiale, la magie de la valeur de départ privée et le jeu de paramètres PQ.
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_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_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 Désactivez les tests auto-tests FIPS applicables.

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 Descriptif
STATUS_SUCCESS La fonction a réussi.
STATUS_INVALID_BUFFER_SIZE Si le pbInput de mémoire tampon n’est pas de la taille correcte pour la combinaison du jeu de paramètres ML-KEM associé à hAlgorithm et pour le type d’objet blob importé.
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).

L’appelant doit libérer hKey avec BCryptDestroyKey lorsque la clé n’est plus utilisé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 Fenêtres
d’en-tête bcrypt.h
bibliothèque Bcrypt.lib
DLL Bcrypt.dll

Voir aussi

BCryptDestroyKey

BCryptExportKey

BCryptImportKey