Fonction CryptExportPublicKeyInfoEx (wincrypt.h)

La fonction CryptExportPublicKeyInfoEx exporte les informations de clé publique associées à la clé privée correspondante du fournisseur. Cette fonction permet à l’application de spécifier l’algorithme de clé publique, en remplaçant la valeur par défaut fournie par le fournisseur de services de chiffrement (CSP).

Syntaxe

BOOL CryptExportPublicKeyInfoEx(
  [in]      HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]      DWORD                           dwKeySpec,
  [in]      DWORD                           dwCertEncodingType,
  [in]      LPSTR                           pszPublicKeyObjId,
  [in]      DWORD                           dwFlags,
  [in]      void                            *pvAuxInfo,
  [out]     PCERT_PUBLIC_KEY_INFO           pInfo,
  [in, out] DWORD                           *pcbInfo
);

Paramètres

[in] hCryptProvOrNCryptKey

Handle du fournisseur de solutions Cloud à utiliser lors de l’exportation des informations de clé publique. Ce handle doit être un handle HCRYPTPROV créé à l’aide de la fonction CryptAcquireContext ou un handle NCRYPT_KEY_HANDLE créé à l’aide de la fonction NCryptOpenKey . Les nouvelles applications doivent toujours passer le handle de NCRYPT_KEY_HANDLE d’un fournisseur de services de configuration CNG.

[in] dwKeySpec

Identifie la clé privée à utiliser à partir du conteneur du fournisseur. Il peut être AT_KEYEXCHANGE ou AT_SIGNATURE. Ce paramètre est ignoré si une NCRYPT_KEY_HANDLE est utilisée dans le paramètre hCryptProvOrNCryptKey .

[in] dwCertEncodingType

Spécifie le type d’encodage utilisé. Il est toujours acceptable de spécifier les types d’encodage de certificat et de message en les combinant avec une opération OR au niveau du bit, comme illustré dans l’exemple suivant :

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Les types d’encodage actuellement définis sont les suivants :

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pszPublicKeyObjId

Spécifie l’algorithme de clé publique.

Notez quepszPublicKeyObjId et dwCertEncodingType sont utilisés ensemble pour déterminer les CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC installables à appeler. Si aucune fonction installable n’a été trouvée pour le paramètre pszPublicKeyObjId , une tentative d’exportation de la clé en tant que clé publique RSA (szOID_RSA_RSA) est effectuée.
 

[in] dwFlags

Valeur d’indicateur DWORD qui indique comment les informations de clé publique sont exportées. La valeur de l’indicateur est passée directement à la fonction CryptFindOIDInfo lors du mappage de l’identificateur d’objet de clé publique à la chaîne Unicode de l’algorithme de clé publique CNG correspondante. Les valeurs d’indicateur suivantes peuvent être définies.

Valeur Signification
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Ignore les clés publiques dans le groupe CRYPT_PUBKEY_ALG_OID_GROUP_ID explicitement marqué avec l’indicateur CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG .
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Ignore les clés publiques dans le groupe CRYPT_PUBKEY_ALG_OID_GROUP_ID marqué explicitement avec l’indicateur CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG .

[in] pvAuxInfo

Ce paramètre est réservé pour une utilisation ultérieure et doit être défini sur NULL.

[out] pInfo

Pointeur vers une structure de CERT_PUBLIC_KEY_INFO pour recevoir les informations de clé publique à exporter.

Ce paramètre peut être NULL pour définir la taille de ces informations à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

[in, out] pcbInfo

Pointeur vers un DWORD qui contient la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre pInfo . Lorsque la fonction retourne, le DWORD contient le nombre d’octets stockés dans la mémoire tampon.

Note Lors du traitement des données retournées dans la mémoire tampon, les applications doivent utiliser la taille réelle des données retournées. La taille réelle peut être légèrement inférieure à la taille de la mémoire tampon spécifiée lors de l’entrée. (Lors de l’entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour garantir que les données de sortie les plus volumineuses possibles tiennent dans la mémoire tampon.) En sortie, la variable pointée par ce paramètre est mise à jour pour refléter la taille réelle des données copiées dans la mémoire tampon.
 

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro (TRUE).

Si la fonction échoue, la valeur de retour est zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Note Les erreurs des fonctions appelées CryptGetUserKey et CryptExportKey peuvent être propagées à cette fonction.
 
Cette fonction contient les codes d’erreur suivants.
Code de retour Description
ERROR_FILE_NOT_FOUND
Une fonction d’exportation qui peut être installée ou inscrite est introuvable pour les paramètres dwCertEncodingType et pszPublicKeyObjId spécifiés.
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pInfo n’est pas assez 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 pcbInfo .
 

Si la fonction échoue, GetLastError peut renvoyer une erreur d’encodage/décodage ASN.1 ( Abstract Syntax Notation One ). Pour plus d’informations sur ces erreurs, consultez Valeurs de retour d’encodage/décodage ASN.1.

Configuration requise

Condition requise Valeur
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

CryptImportPublicKeyInfoEx

Gestion des données Functions