Partager via


NCryptExportKey, fonction (ncrypt.h)

La fonction NCryptExportKey exporte une clé CNG vers un objet BLOB de mémoire.

Syntaxe

SECURITY_STATUS NCryptExportKey(
  [in]            NCRYPT_KEY_HANDLE hKey,
  [in, optional]  NCRYPT_KEY_HANDLE hExportKey,
  [in]            LPCWSTR           pszBlobType,
  [in, optional]  NCryptBufferDesc  *pParameterList,
  [out, optional] PBYTE             pbOutput,
  [in]            DWORD             cbOutput,
  [out]           DWORD             *pcbResult,
  [in]            DWORD             dwFlags
);

Paramètres

[in] hKey

Handle de la clé à exporter.

[in, optional] hExportKey

Handle vers une clé de chiffrement de l’utilisateur de destination. Les données de clé dans l’objet blob de clé exportée sont chiffrées à l’aide de cette clé. Cela garantit que seul l’utilisateur de destination est en mesure d’utiliser l’objet BLOB de clé.

[in] pszBlobType

Chaîne Unicode terminée par null qui contient un identificateur qui spécifie le type d’objet BLOB à exporter. Il peut s’agir de l’une des valeurs suivantes.

BCRYPT_DH_PRIVATE_BLOB

Exportez une paire de clés publique/privée Diffie-Hellman. La mémoire tampon pbOutput reçoit une structure BCRYPT_DH_KEY_BLOB immédiatement suivie des données clés.

BCRYPT_DH_PUBLIC_BLOB

Exportez une clé publique Diffie-Hellman. La mémoire tampon pbOutput reçoit une structure BCRYPT_DH_KEY_BLOB immédiatement suivie des données clés.

BCRYPT_DSA_PRIVATE_BLOB

Exportez une paire de clés publique/privée DSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_DSA_KEY_BLOB immédiatement suivie des données clés.

BCRYPT_DSA_PUBLIC_BLOB

Exportez une clé publique DSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_DSA_KEY_BLOB immédiatement suivie des données clés.

BCRYPT_ECCPRIVATE_BLOB

Exportez une clé privéeECC (Elliptic Curve Cryptography). La mémoire tampon pbOutput reçoit une structure BCRYPT_ECCKEY_BLOB immédiatement suivie des données clés.

BCRYPT_ECCPUBLIC_BLOB

Exportez une clé publique ECC. La mémoire tampon pbOutput reçoit une structure BCRYPT_ECCKEY_BLOB immédiatement suivie des données clés.

BCRYPT_MLKEM_PRIVATE_SEED_BLOB

Exportez une clé de départ privée ML-KEM. La mémoire tampon pbOutput reçoit une structure BCRYPT_MLKEM_KEY_BLOB immédiatement suivie du jeu de paramètres et des données de clé.

Remarque : ML-KEM handles de clé qui contiennent une clé privée qui a été importée à l’aide de BCRYPT_MLKEM_PRIVATE_BLOB disposent d’informations insuffisantes pour exporter une clé initiale privée.

Windows Insiders (build 27843) : La prise en charge de ML-KEM commence.

BCRYPT_MLKEM_PRIVATE_BLOB

Exportez une clé privée (decapsulation) ML-KEM. La mémoire tampon pbOutput reçoit une structure BCRYPT_MLKEM_KEY_BLOB immédiatement suivie du jeu de paramètres et des données de clé.

Windows Insiders (build 27843) : La prise en charge de ML-KEM commence.

BCRYPT_MLKEM_PUBLIC_BLOB

Exportez une clé publique (encapsulation) ML-KEM. La mémoire tampon pbOutput reçoit une structure BCRYPT_MLKEM_KEY_BLOB immédiatement suivie du jeu de paramètres et des données de clé.

Windows Insiders (build 27843) : La prise en charge de ML-KEM commence.

BCRYPT_PQDSA_PRIVATE_SEED_BLOB

Exportez une clé de départ privée PQDSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_PQDSA_KEY_BLOB immédiatement suivie du jeu de paramètres et des données de clé.

Note: Les handles de clé PQDSA qui contiennent une clé privée qui a été importée à l’aide de BCRYPT_PQDSA_PRIVATE_BLOB ont des informations insuffisantes pour exporter une clé initiale privée.

Windows Insiders (build 27843) : La prise en charge de ML-DSA commence.

BCRYPT_PQDSA_PRIVATE_BLOB

Exportez une clé privée PQDSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_PQDSA_KEY_BLOB immédiatement suivie du jeu de paramètres et des données de clé.

Windows Insiders (build 27843) : La prise en charge de ML-DSA commence.

BCRYPT_PQDSA_PUBLIC_BLOB

Exportez une clé publique PQDSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_PQDSA_KEY_BLOB immédiatement suivie du jeu de paramètres et des données de clé.

Windows Insiders (build 27843) : La prise en charge de ML-DSA commence.

BCRYPT_PUBLIC_KEY_BLOB

Exportez 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

Exportez 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_RSAFULLPRIVATE_BLOB

Exportez une paire de clés publique/privée RSA complète. La mémoire tampon pbOutput reçoit une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données clés. Cet objet BLOB inclut des éléments clés supplémentaires par rapport au type de BCRYPT_RSAPRIVATE_BLOB .

BCRYPT_RSAPRIVATE_BLOB

Exportez une paire de clés publique/privée RSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données clés.

BCRYPT_RSAPUBLIC_BLOB

Exportez une clé publique RSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données clés.

LEGACY_DH_PRIVATE_BLOB

Exportez un objet BLOB de clé privéeDiffie-Hellman version 3 héritée qui contient une paire de clés publique/privée Diffie-Hellman qui peut être importée à l’aide de CryptoAPI.

LEGACY_DH_PUBLIC_BLOB

Exportez un objet BLOB de clé privée héritéeDiffie-Hellman version 3 qui contient une clé publique Diffie-Hellman pouvant être importée à l’aide de CryptoAPI.

LEGACY_DSA_PRIVATE_BLOB

Exportez une paire de clés publique/privée DSA dans un formulaire qui peut être importé à l’aide de CryptoAPI.

LEGACY_DSA_PUBLIC_BLOB

Exportez une clé publique DSA dans un formulaire qui peut être importé à l’aide de CryptoAPI.

LEGACY_RSAPRIVATE_BLOB

Exportez une paire de clés publique/privée RSA dans un formulaire qui peut être importé à l’aide de CryptoAPI.

LEGACY_RSAPUBLIC_BLOB

Exportez une clé publique RSA dans un formulaire qui peut être importé à l’aide de CryptoAPI.

NCRYPT_CIPHER_KEY_BLOB

Exportez une clé de chiffrement dans une structure de NCRYPT_KEY_BLOB_HEADER .

Windows 8 et Windows Server 2012 : La prise en charge de cette valeur commence.

NCRYPT_OPAQUETRANSPORT_BLOB

Exportez une clé dans un format spécifique à un fournisseur de solutions Cloud unique et convient au transport. Les objets blob opaques ne sont pas transférables et doivent être importés à l’aide du même csp que celui qui a généré l’objet BLOB.

NCRYPT_PKCS7_ENVELOPE_BLOB

Exportez un objet BLOB d’enveloppe PKCS #7. Les paramètres identifiés par le paramètre pParameterList peuvent ou doivent contenir les paramètres suivants, comme indiqué par la colonne Obligatoire ou facultative.

Paramètre Obligatoire ou facultatif
NCRYPTBUFFER_CERT_BLOB Obligatoire
NCRYPTBUFFER_PKCS_ALG_OID Obligatoire
NCRYPTBUFFER_PKCS_ALG_PARAM Optionnel

NCRYPT_PKCS8_PRIVATE_KEY_BLOB

Exportez un objet BLOB de clé privée PKCS #8. Les paramètres identifiés par le paramètre pParameterList peuvent ou doivent contenir les paramètres suivants, comme indiqué par la colonne Obligatoire ou facultative.

Paramètre Obligatoire ou facultatif
NCRYPTBUFFER_PKCS_ALG_OID Optionnel
NCRYPTBUFFER_PKCS_ALG_PARAM Optionnel
NCRYPTBUFFER_PKCS_SECRET Optionnel

NCRYPT_PROTECTED_KEY_BLOB

Exportez une clé protégée dans une structure NCRYPT_KEY_BLOB_HEADER .

Windows 8 et Windows Server 2012 : La prise en charge de cette valeur commence.

NCRYPT_PQ_PRIVATE_KEY_BLOB

Exportez une clé privée générique de n’importe quel type d’algorithme Post-Quantum. Le type de clé dans cet objet BLOB est déterminé par le membre Magic de la structure NCRYPT_PQ_BLOB .

[in, optional] pParameterList

Adresse d’une structure NCryptBufferDesc qui reçoit des informations de paramètre pour la clé. Ce paramètre peut être NULL si ces informations ne sont pas nécessaires.

[out, optional] pbOutput

Adresse d’une mémoire tampon qui reçoit l’objet BLOB de clé. Le paramètre cbOutput contient la taille de cette mémoire tampon. Si ce paramètre est NULL, cette fonction place la taille requise, en octets, dans le DWORD pointé par le paramètre cciResult .

[in] cbOutput

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

[out] pcbResult

Adresse d’une variable DWORD qui reçoit le nombre d’octets copiés dans la mémoire tampon pbOutput . Si le paramètre pbOutput a la valeur NULL, cette fonction place la taille requise, en octets, dans le DWORD pointé par ce paramètre.

[in] dwFlags

Indicateurs qui modifient le comportement de la fonction. Il peut s’agir de zéro ou d’une combinaison d’une ou plusieurs des valeurs suivantes. L’ensemble d’indicateurs valides est spécifique à chaque fournisseur de stockage de clés. L’indicateur suivant s’applique à tous les fournisseurs.

Valeur Sens
NCRYPT_SILENT_FLAG Demande que le fournisseur de stockage de clés (KSP) n’affiche aucune interface utilisateur. Si le fournisseur doit afficher l’interface utilisateur à utiliser, l’appel échoue et le KSP doit définir le code d’erreur NTE_SILENT_CONTEXT comme dernière erreur.

Valeur retournée

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.

Code de retour Descriptif
ERROR_SUCCESS La fonction a réussi.
NTE_BAD_FLAGS Le paramètre dwFlags contient une valeur qui n’est pas valide.
NTE_BAD_KEY_STATE La clé spécifiée par le paramètre hKey n’est pas valide. La cause la plus courante de cette erreur est que la clé n’a pas été terminée à l’aide de la fonction NCryptFinalizeKey .
NTE_BAD_TYPE La clé spécifiée par le paramètre hKey ne peut pas être exportée dans le type BLOB spécifié par le paramètre pszBlobType .
NTE_INVALID_HANDLE Le paramètre hKey ou hExportKey n’est pas valide.
NTE_INVALID_PARAMETER Un ou plusieurs paramètres ne sont pas valides.

Remarques

Un service ne doit pas appeler cette fonction à partir de sa fonction StartService. Si un service appelle cette fonction à partir de sa fonction StartService , un interblocage peut se produire et le service peut cesser de répondre.

Spécifications

Besoin Valeur
Client minimum requis Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | Applications UWP]
plateforme cible Fenêtres
En-tête ncrypt.h
Bibliothèque Ncrypt.lib
DLL Ncrypt.dll

Voir aussi