Funzione CryptExportPublicKeyInfoEx (wincrypt.h)

La funzione CryptExportPublicKeyInfoEx esporta le informazioni sulla chiave pubblica associate alla chiave privata corrispondente del provider. Questa funzione consente all'applicazione di specificare l'algoritmo di chiave pubblica, sostituendo il valore predefinito fornito dal provider di servizi di crittografia (CSP).

Sintassi

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

Parametri

[in] hCryptProvOrNCryptKey

Handle del CSP da usare per 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 usando la funzione NCryptOpenKey . Le nuove applicazioni devono sempre passare l'handle NCRYPT_KEY_HANDLE di un CNG CSP.

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

Specifica l'algoritmo di chiave pubblica.

NotapszPublicKeyObjId e dwCertEncodingType vengono usati insieme per determinare il CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC installabile da chiamare. Se non è stata trovata una funzione installabile per il parametro pszPublicKeyObjId , viene eseguito un tentativo di esportare la chiave come chiave pubblica RSA (szOID_RSA_RSA).
 

[in] dwFlags

Valore del flag DWORD che indica come vengono esportate le informazioni sulla chiave pubblica. Il valore del flag viene passato direttamente alla funzione CryptFindOIDInfo durante il mapping dell'identificatore dell'oggetto chiave pubblica corrispondente alla stringa Unicode dell'algoritmo di chiave pubblica CNG corrispondente. È possibile impostare i valori di flag seguenti.

Valore Significato
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Ignora le chiavi pubbliche nel gruppo CRYPT_PUBKEY_ALG_OID_GROUP_ID contrassegnato in modo esplicito con il flag di CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG .
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Ignora le chiavi pubbliche nel gruppo CRYPT_PUBKEY_ALG_OID_GROUP_ID contrassegnato in modo esplicito con il flag di CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG .

[in] pvAuxInfo

Questo parametro è riservato per l'uso futuro e deve essere impostato su NULL.

[out] pInfo

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

Questo parametro può essere NULL per impostare le dimensioni di queste informazioni per scopi di allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.

[in, out] pcbInfo

Puntatore a un DWORD contenente le dimensioni, in byte, del buffer a cui punta il parametro pInfo . Quando la funzione restituisce, la DWORD contiene il numero di byte archiviati nel buffer.

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 rispetto alle dimensioni del buffer specificato nell'input. In base all'input, le dimensioni del buffer vengono in genere specificate abbastanza 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 per riflettere le dimensioni effettive dei dati copiati nel buffer.
 

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).

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

Nota Gli errori delle funzioni denominate CryptGetUserKey e CryptExportKey possono essere propagati a questa funzione.
 
Questa funzione contiene i codici di errore seguenti.
Codice restituito Descrizione
ERROR_FILE_NOT_FOUND
Impossibile trovare una funzione di esportazione che può essere installata o registrata per i parametri dwCertEncodingType e pszPublicKeyObjId specificati.
ERROR_MORE_DATA
Se il buffer specificato dal parametro pInfo non è sufficiente per 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 il parametro pcbInfo .
 

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.

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

CryptImportPublicKeyInfoEx

Funzioni Gestione dati