Fonction CryptExportPKCS8 (wincrypt.h)

[La fonction CryptExportPKCS8 n’est plus disponible depuis Windows Server 2008 et Windows Vista. Utilisez plutôt la fonction PFXExportCertStoreEx .]

La fonction CryptExportPKCS8 exporte la clé privée au format PKCS #8. La fonction est remplacée par CryptExportPKCS8Ex, qui peut également être modifié ou indisponible dans les versions suivantes.

Syntaxe

BOOL CryptExportPKCS8(
  [in]            HCRYPTPROV hCryptProv,
  [in]            DWORD      dwKeySpec,
  [in]            LPSTR      pszPrivateKeyObjId,
  [in]            DWORD      dwFlags,
  [in, optional]  void       *pvAuxInfo,
  [out, optional] BYTE       *pbPrivateKeyBlob,
  [in, out]       DWORD      *pcbPrivateKeyBlob
);

Paramètres

[in] hCryptProv

Variable HCRYPTPROV qui contient le fournisseur de services de chiffrement (CSP). Il s’agit d’un handle pour le fournisseur de solutions Cloud obtenu en appelant CryptAcquireContext.

[in] dwKeySpec

Variable DWORD qui contient la spécification de clé. Les valeurs dwKeySpec suivantes sont définies pour le fournisseur par défaut.

Valeur Signification
AT_KEYEXCHANGE
Clés utilisées pour chiffrer/déchiffrer les clés de session.
AT_SIGNATURE
Clés utilisées pour créer et vérifier les signatures numériques.

[in] pszPrivateKeyObjId

Variable LPSTR qui contient l’identificateur d’objet de clé privée (OID).

[in] dwFlags

Ce paramètre doit être égal à zéro si pbPrivateKeyBlob a la valeur NULL et 0x8000 dans le cas contraire.

[in, optional] pvAuxInfo

Ce paramètre doit être défini sur NULL.

[out, optional] pbPrivateKeyBlob

Pointeur vers un tableau de structures BYTE pour recevoir la clé privée à exporter.

La clé privée contient les informations d’un type PKCS #8 PrivateKeyInfo Abstract Syntax Notation One (ASN.1) trouvé dans la norme PKCS #8.

À des fins d’allocation de mémoire, vous pouvez obtenir la taille de la clé privée à exporter en définissant ce paramètre sur NULL. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

[in, out] pcbPrivateKeyBlob

Pointeur vers un DWORD qui peut contenir, lors de l’entrée, la taille, en octets, de l’allocation de mémoire nécessaire pour contenir le pbPrivateKeyBlob. Si pbPrivateKeyBlob a la valeur NULL, ce paramètre retourne la taille de l’allocation de mémoire nécessaire pour un deuxième appel à la fonction. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Les codes d’erreur suivants sont spécifiques à cette fonction.

Code de retour Description
ERROR_UNSUPPORTED_TYPE
Une fonction d’exportation qui peut être installée ou inscrite est introuvable.
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pbPrivateKeyBlob n’est pas suffisamment grande pour contenir les données retournées, la fonction définit le code ERROR_MORE_DATA et stocke la taille de mémoire tampon requise, en octets, dans la variable pointée par le paramètre pcbPrivateKeyBlob .
 

Si la fonction échoue, GetLastError peut retourner une erreur d’encodage/décodage ASN.1. Pour plus d’informations sur ces erreurs, consultez Valeurs de retour d’encodage/décodage ASN.1.

Remarques

Cette fonction est uniquement prise en charge pour les clés asymétriques.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

CryptAcquireContext

CryptExportPKCS8Ex

Récupération de données de longueur inconnue