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.
[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 |
---|---|
|
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 . |
|
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.
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.
Codice restituito | Descrizione |
---|---|
|
Impossibile trovare una funzione di esportazione che può essere installata o registrata per i parametri dwCertEncodingType e pszPublicKeyObjId specificati. |
|
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 |