Funzione CryptExportPKCS8 (wincrypt.h)

[La funzione CryptExportPKCS8 non è più disponibile per l'uso a partire da Windows Server 2008 e Windows Vista. Usare invece la funzione PFXExportCertStoreEx .]

La funzione CryptExportPKCS8 esporta la chiave privata in formato PKCS #8. La funzione viene sostituita da CryptExportPKCS8Ex, che può anche essere modificata o non disponibile nelle versioni successive.

Sintassi

BOOL CryptExportPKCS8(
  [in]            HCRYPTPROV hCryptProv,
  [in]            DWORD      dwKeySpec,
  [in]            LPSTR      pszPrivateKeyObjId,
  [in]            DWORD      dwFlags,
  [in, optional]  void       *pvAuxInfo,
  [out, optional] BYTE       *pbPrivateKeyBlob,
  [in, out]       DWORD      *pcbPrivateKeyBlob
);

Parametri

[in] hCryptProv

Variabile HCRYPTPROV che contiene il provider di servizi di crittografia (CSP). Si tratta di un handle per il CSP ottenuto chiamando CryptAcquireContext.

[in] dwKeySpec

Variabile DWORD che contiene la specifica della chiave. Per il provider predefinito vengono definiti i valori dwKeySpec seguenti.

Valore Significato
AT_KEYEXCHANGE
Chiavi usate per crittografare/decrittografare le chiavi di sessione.
AT_SIGNATURE
Chiavi usate per creare e verificare le firme digitali.

[in] pszPrivateKeyObjId

Variabile LPSTR che contiene l'identificatore dell'oggetto chiave privata (OID).

[in] dwFlags

Questo parametro deve essere zero se pbPrivateKeyBlob è NULL e 0x8000 in caso contrario.

[in, optional] pvAuxInfo

Questo parametro deve essere impostato su NULL.

[out, optional] pbPrivateKeyBlob

Puntatore a una matrice di strutture BYTE per ricevere la chiave privata da esportare.

La chiave privata conterrà le informazioni contenute in un tipo PKCS #8 PrivateKeyInfo Abstract Syntax Notation One (ASN.1) disponibile nello standard PKCS #8.

Ai fini dell'allocazione di memoria, è possibile ottenere le dimensioni della chiave privata da esportare impostando questo parametro su NULL. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

[in, out] pcbPrivateKeyBlob

Puntatore a un DWORD che può contenere, in input, le dimensioni, in byte, dell'allocazione di memoria necessaria per contenere pbPrivateKeyBlob. Se pbPrivateKeyBlob è NULL, questo parametro restituirà le dimensioni dell'allocazione di memoria necessaria per una seconda chiamata alla funzione. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

Valore restituito

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

Se la funzione ha esito negativo, restituisce zero. Per informazioni sugli errori estesi, chiamare GetLastError.

I codici di errore seguenti sono specifici di questa funzione.

Codice restituito Descrizione
ERROR_UNSUPPORTED_TYPE
Impossibile trovare una funzione di esportazione che può essere installata o registrata.
ERROR_MORE_DATA
Se il buffer specificato dal parametro pbPrivateKeyBlob 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 il parametro pcbPrivateKeyBlob .
 

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

Commenti

Questa funzione è supportata solo per le chiavi asimmetriche.

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

Cryptacquirecontext

CryptExportPKCS8Ex

Recupero di dati di lunghezza sconosciuta