Condividi tramite


Funzione CryptExportPublicKeyInfo (wincrypt.h)

La funzione CryptExportPublicKeyInfo esporta le informazioni sulla chiave pubblica associate alla chiave privata corrispondente del provider. Per una versione aggiornata di questa funzione, vedere CryptExportPublicKeyInfoEx.

Sintassi

BOOL CryptExportPublicKeyInfo(
  [in]      HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]      DWORD                           dwKeySpec,
  [in]      DWORD                           dwCertEncodingType,
  [out]     PCERT_PUBLIC_KEY_INFO           pInfo,
  [in, out] DWORD                           *pcbInfo
);

Parametri

[in] hCryptProvOrNCryptKey

Handle del provider di servizi di crittografia (CSP) da usare durante l'esportazione delle informazioni sulla chiave pubblica. Questo handle deve essere un handle HCRYPTPROV creato usando la funzione CryptAcquireContext o un handle NCRYPT_KEY_HANDLE creato tramite la funzione NCryptOpenKey . Le nuove applicazioni devono sempre passare l'handle NCRYPT_KEY_HANDLE di un CSP CNG.

[in] dwKeySpec

Identifica la chiave privata da usare dal contenitore del provider. Può essere AT_KEYEXCHANGE o AT_SIGNATURE. Questo parametro viene ignorato se viene usato un NCRYPT_KEY_HANDLE nel parametro hCryptProvOrNCryptKey .

[in] dwCertEncodingType

Specifica il tipo di codifica utilizzato. È sempre accettabile specificare sia il certificato che i tipi di codifica dei messaggi combinandoli con un'operazione OR bit per bit, 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

[out] pInfo

Puntatore a una struttura CERT_PUBLIC_KEY_INFO per ricevere le informazioni sulla chiave pubblica da esportare.

Per impostare le dimensioni di queste informazioni ai fini dell'allocazione di memoria, questo parametro può essere NULL. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

[in, out] pcbInfo

Puntatore a un DWORD contenente le dimensioni, in byte, del buffer a cui punta il parametro pInfo . Al termine della funzione, il DWORD contiene il numero di byte necessari per il buffer restituito.

Nota Quando si elaborano i dati restituiti nel buffer, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori alle dimensioni del buffer specificato nell'input. In caso di input, le dimensioni del buffer vengono in genere specificate sufficientemente grandi per garantire che i dati di output più grandi siano adatti al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata in modo da riflettere le dimensioni effettive dei dati copiati nel buffer.
 

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero (TRUE).

Se la funzione non riesce, restituisce zero (FALSE). Per informazioni sugli errori estesi, chiamare GetLastError.

Nota Gli errori delle funzioni chiamate CryptGetUserKey e CryptExportKey potrebbero essere propagati a questa funzione.
 
Questa funzione presenta i codici di errore seguenti.
Codice restituito Descrizione
ERROR_MORE_DATA
Se il buffer specificato dal parametro pInfo non è sufficientemente grande da contenere i dati restituiti, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile a cui punta pcbInfo.
ERROR_FILE_NOT_FOUND
Tipo di codifica del certificato non valido. Attualmente è supportato solo X509_ASN_ENCODING.
 

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

Requisiti

Requisito Valore
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

CryptImportPublicKeyInfo

Funzioni Gestione dati