Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 |