Fonction CryptImportPublicKeyInfoEx (wincrypt.h)

Important Cette API est déconseillée. Les logiciels nouveaux et existants doivent commencer à utiliser les API de nouvelle génération de chiffrement. Microsoft peut supprimer cette API dans les versions ultérieures.
 
La fonction CryptImportPublicKeyInfoEx importe les informations de clé publique dans le fournisseur de services de chiffrement (CSP) et retourne un handle de la clé publique. Des paramètres supplémentaires pour remplacer les valeurs par défaut sont fournis pour compléter ceux de CERT_PUBLIC_KEY_INFO.

Syntaxe

BOOL CryptImportPublicKeyInfoEx(
  [in]  HCRYPTPROV            hCryptProv,
  [in]  DWORD                 dwCertEncodingType,
  [in]  PCERT_PUBLIC_KEY_INFO pInfo,
  [in]  ALG_ID                aiKeyAlg,
  [in]  DWORD                 dwFlags,
  [in]  void                  *pvAuxInfo,
  [out] HCRYPTKEY             *phKey
);

Paramètres

[in] hCryptProv

Handle du fournisseur de solutions cloud pour recevoir la clé publique importée. Ce handle doit avoir déjà été créé à l’aide de CryptAcquireContext.

[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] pInfo

adresse d’une structure de CERT_PUBLIC_KEY_INFO qui contient la clé publique à importer dans le fournisseur.

Note Le membre pzObjId du membre Algorithm pointé vers par les paramètres pInfo et dwCertEncodingType détermine une fonction de rappel installable CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC . Si une fonction installable est introuvable, une tentative d’importation de la clé en tant que clé publique RSA (szOID_RSA_RSA) est effectuée.
 

[in] aiKeyAlg

Une structure ALG_ID qui contient un algorithme spécifique au fournisseur de solutions Cloud pour remplacer l’algorithme par défaut CALG_RSA_KEYX .

[in] dwFlags

Réservé à une utilisation future et doit être égal à zéro.

[in] pvAuxInfo

Réservé pour une utilisation ultérieure et doit avoir la valeur NULL.

[out] phKey

Adresse d’une variable HCRYPTKEY qui reçoit le handle de la clé publique importée. Une fois la clé publique terminée, relâchez le handle en appelant la fonction CryptDestroyKey .

Valeur retournée

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

Si la fonction échoue, elle retourne 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 a le code d’erreur suivant.
 
Valeur Description
ERROR_FILE_NOT_FOUND
Une fonction d’importation qui peut être installée ou inscrite est introuvable pour les paramètres dwCertEncodingType et pInfo spécifiés.
 

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.

Remarques

Cette fonction est normalement utilisée pour récupérer la clé publique à partir d’un certificat. Pour ce faire, passez la structure CERT_PUBLIC_KEY_INFO à partir d’une structure de certificat renseignée, comme indiqué dans le pseudocode suivant.

PCCERT_CONTEXT pCertContext

// Get the certificate context structure from a certificate.
pCertContext = CertCreateCertificateContext(...)
if(pCertContext)
{
    HCRYPTKEY hCertPubKey

    // Get the public key information for the certificate.
    CryptImportPublicKeyInfo(
        hCryptProv, 
        X509_ASN_ENCODING, 
        &pCertContext->pCertInfo->SubjectPublicKeyInfo, 
        &hCertPubKey)

    CertFreeCertificateContext(pCertContext)
}

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

CryptExportPublicKeyInfoEx

fonctions Gestion des données