Condividi tramite


Funzione CryptImportPublicKeyInfoEx (wincrypt.h)

Importante Questa API è deprecata. Il software nuovo e esistente deve iniziare a usare le API di nuova generazione di crittografia. Microsoft può rimuovere questa API nelle versioni future.
 
La funzione CryptImportPublicKeyInfoEx importa informazioni sulla chiave pubblica nel provider di servizi di crittografia (CSP) e restituisce un handle della chiave pubblica. I parametri aggiuntivi per eseguire l'override delle impostazioni predefinite vengono forniti per integrare quelli in CERT_PUBLIC_KEY_INFO.

Sintassi

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
);

Parametri

[in] hCryptProv

Handle del CSP per ricevere la chiave pubblica importata. Questo handle deve essere già stato creato usando CryptAcquireContext.

[in] dwCertEncodingType

Specifica il tipo di codifica usato. È sempre accettabile specificare sia i tipi di codifica del certificato che dei messaggi combinandoli con un'operazione bit per bit or , come illustrato nell'esempio seguente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

I tipi di codifica attualmente definiti sono:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pInfo

indirizzo di una struttura CERT_PUBLIC_KEY_INFO che contiene la chiave pubblica da importare nel provider.

Nota Il membro pzObjId del membro Algoritmo puntato ai parametri pInfo e dwCertEncodingType determina una funzione di callback installabile CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC . Se non viene trovata una funzione installabile, viene eseguito un tentativo di importare la chiave come chiave pubblica RSA (szOID_RSA_RSA).
 

[in] aiKeyAlg

Struttura ALG_ID che contiene un algoritmo specifico di CSP per eseguire l'override dell'algoritmo predefinito CALG_RSA_KEYX .

[in] dwFlags

Riservato per l'uso futuro e deve essere zero.

[in] pvAuxInfo

Riservato per l'uso futuro e deve essere NULL.

[out] phKey

Indirizzo di una variabile HCRYPTKEY che riceve l'handle della chiave pubblica importata. Al termine dell'uso della chiave pubblica, rilasciare l'handle chiamando la funzione CryptDestroyKey .

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce non zero (TRUE).

Se la funzione ha esito negativo, restituisce zero (FALSE). Per informazioni sull'errore estese, chiamare GetLastError.

Nota Gli errori delle funzioni denominate CryptGetUserKey e CryptExportKey potrebbero essere propagati a questa funzione. Questa funzione ha il codice di errore seguente.
 
Valore Descrizione
ERROR_FILE_NOT_FOUND
Impossibile trovare una funzione di importazione che può essere installata o registrata per i parametri dwCertEncodingType e pInfo specificati.
 

Se la funzione ha esito negativo, GetLastError potrebbe restituire un errore di codifica astratta Notation One (ASN.1). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.

Commenti

Questa funzione viene in genere usata per recuperare la chiave pubblica da un certificato. Questa operazione viene eseguita passando la struttura CERT_PUBLIC_KEY_INFO da una struttura di certificato compilata, come illustrato nello pseudocodice seguente.

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)
}

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CryptExportPublicKeyInfoEx

Funzioni Gestione dati