NCryptExportKey, fonction (ncrypt.h)
La fonction NCryptExportKey exporte une clé CNG vers un objet BLOB 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é 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 un caractère 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
Exporter une Diffie-Hellman paire de clés publique/privée. La mémoire tampon pbOutput reçoit une structure BCRYPT_DH_KEY_BLOB immédiatement suivie des données de clé.
BCRYPT_DH_PUBLIC_BLOB
Exporter une clé publique Diffie-Hellman. La mémoire tampon pbOutput reçoit une structure BCRYPT_DH_KEY_BLOB immédiatement suivie des données de clé.
BCRYPT_DSA_PRIVATE_BLOB
Exporter une paire de clés publiques/privées DSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_DSA_KEY_BLOB immédiatement suivie des données de clé.
BCRYPT_DSA_PUBLIC_BLOB
Exporter une clé publique DSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_DSA_KEY_BLOB immédiatement suivie des données de clé.
BCRYPT_ECCPRIVATE_BLOB
Exportez une clé privée ECC (Elliptic Curve Cryptography). La mémoire tampon pbOutput reçoit une structure BCRYPT_ECCKEY_BLOB immédiatement suivie des données de clé.
BCRYPT_ECCPUBLIC_BLOB
Exporter une clé publique ECC. La mémoire tampon pbOutput reçoit une structure BCRYPT_ECCKEY_BLOB immédiatement suivie des données de clé.
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
Exporter 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 de clé. Cet objet BLOB inclut des éléments clés supplémentaires par rapport au type BCRYPT_RSAPRIVATE_BLOB .
BCRYPT_RSAPRIVATE_BLOB
Exporter une paire de clés publiques/privées RSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données de clé.
BCRYPT_RSAPUBLIC_BLOB
Exporter une clé publique RSA. La mémoire tampon pbOutput reçoit une structure BCRYPT_RSAKEY_BLOB immédiatement suivie des données de clé.
LEGACY_DH_PRIVATE_BLOB
Exportez 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 pouvant être importée à l’aide de CryptoAPI.
LEGACY_DH_PUBLIC_BLOB
Exportez un objet BLOB de clé privée Diffie-Hellman version 3 hérité qui contient une clé publique Diffie-Hellman qui peut être importée à l’aide de CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Exportez une paire de clés publiques/privées DSA sous une forme qui peut être importée à 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 publiques/privées RSA sous une forme qui peut être importée à l’aide de CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
Exportez une clé publique RSA sous une forme qui peut être importée à l’aide de CryptoAPI.
NCRYPT_CIPHER_KEY_BLOB
Exporter une clé de chiffrement dans une structure 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 seul fournisseur de solutions Cloud et adapté au transport. Les objets BLOB opaques ne sont pas transférables et doivent être importés à l’aide du fournisseur de solutions Cloud qui a généré l’objet BLOB.
NCRYPT_PKCS7_ENVELOPE_BLOB
Exporter 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 | Facultatif |
NCRYPT_PKCS8_PRIVATE_KEY_BLOB
Exporter 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 | Facultatif |
NCRYPTBUFFER_PKCS_ALG_PARAM | Facultatif |
NCRYPTBUFFER_PKCS_SECRET | Facultatif |
NCRYPT_PROTECTED_KEY_BLOB
Exporter 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.
[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 a la valeur NULL, cette fonction place la taille requise, en octets, dans le DWORD pointé par le paramètre pcbResult .
[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 | Signification |
---|---|
NCRYPT_SILENT_FLAG | Demande que le fournisseur de services clés (KSP) n’affiche aucune interface utilisateur. Si le fournisseur doit afficher l’interface utilisateur pour fonctionner, 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 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 |
---|---|
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.
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 | ncrypt.h |
Bibliothèque | Ncrypt.lib |
DLL | Ncrypt.dll |