Partager via


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

Voir aussi