Funzione NCryptExportKey (ncrypt.h)
La funzione NCryptExportKey esporta una chiave CNG in un BLOB di memoria.
Sintassi
SECURITY_STATUS NCryptExportKey(
[in] NCRYPT_KEY_HANDLE hKey,
[in, optional] NCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[in, optional] NCryptBufferDesc *pParameterList,
[out, optional] PBYTE pbOutput,
[in] DWORD cbOutput,
[out] DWORD *pcbResult,
[in] DWORD dwFlags
);
Parametri
[in] hKey
Handle della chiave da esportare.
[in, optional] hExportKey
Handle per una chiave crittografica dell'utente di destinazione. I dati della chiave all'interno del BLOB della chiave esportata vengono crittografati usando questa chiave. Ciò garantisce che solo l'utente di destinazione sia in grado di usare il BLOB della chiave.
[in] pszBlobType
Stringa Unicode con terminazione Null contenente un identificatore che specifica il tipo di BLOB da esportare. Può trattarsi di uno dei valori seguenti.
BCRYPT_DH_PRIVATE_BLOB
Esportare una coppia di chiavi pubblica/privata Diffie-Hellman. Il buffer pbOutput riceve una struttura BCRYPT_DH_KEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_DH_PUBLIC_BLOB
Esportare una chiave pubblica Diffie-Hellman. Il buffer pbOutput riceve una struttura BCRYPT_DH_KEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_DSA_PRIVATE_BLOB
Esportare una coppia di chiavi pubblica/privata DSA. Il buffer pbOutput riceve una struttura BCRYPT_DSA_KEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_DSA_PUBLIC_BLOB
Esportare una chiave pubblica DSA. Il buffer pbOutput riceve una struttura BCRYPT_DSA_KEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_ECCPRIVATE_BLOB
Esportare una chiave privata ecc (elliptic curve cryptography). Il buffer pbOutput riceve una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_ECCPUBLIC_BLOB
Esportare una chiave pubblica ECC. Il buffer pbOutput riceve una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_PUBLIC_KEY_BLOB
Esportare una chiave pubblica generica di qualsiasi tipo. Il tipo di chiave in questo BLOB è determinato dal membro Magic della struttura BCRYPT_KEY_BLOB .
BCRYPT_PRIVATE_KEY_BLOB
Esportare una chiave privata generica di qualsiasi tipo. La chiave privata non contiene necessariamente la chiave pubblica. Il tipo di chiave in questo BLOB è determinato dal membro Magic della struttura BCRYPT_KEY_BLOB .
BCRYPT_RSAFULLPRIVATE_BLOB
Esportare una coppia di chiavi pubblica/privata RSA completa. Il buffer pbOutput riceve una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati chiave. Questo BLOB includerà materiale aggiuntivo della chiave rispetto al tipo di BCRYPT_RSAPRIVATE_BLOB .
BCRYPT_RSAPRIVATE_BLOB
Esportare una coppia di chiavi pubblica/privata RSA. Il buffer pbOutput riceve una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_RSAPUBLIC_BLOB
Esportare una chiave pubblica RSA. Il buffer pbOutput riceve una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati chiave.
LEGACY_DH_PRIVATE_BLOB
Esportare un BLOB di chiave privata Diffie-Hellman versione 3 legacy che contiene una coppia di chiavi pubblica/privata Diffie-Hellman che può essere importata tramite CryptoAPI.
LEGACY_DH_PUBLIC_BLOB
Esportare un BLOB di chiave privata Diffie-Hellman versione 3 legacy che contiene una chiave pubblica Diffie-Hellman che può essere importata tramite CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Esportare una coppia di chiavi pubblica/privata DSA in un formato che può essere importato tramite CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
Esportare una chiave pubblica DSA in un modulo che può essere importato tramite CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
Esportare una coppia di chiavi pubblica/privata RSA in un modulo che può essere importato tramite CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
Esportare una chiave pubblica RSA in un formato che può essere importato tramite CryptoAPI.
NCRYPT_CIPHER_KEY_BLOB
Esportare una chiave di crittografia in una struttura NCRYPT_KEY_BLOB_HEADER .
Windows 8 e Windows Server 2012: inizia il supporto per questo valore.
NCRYPT_OPAQUETRANSPORT_BLOB
Esportare una chiave in un formato specifico per un singolo CSP ed è adatta per il trasporto. I BLOB opachi non sono trasferibili e devono essere importati usando lo stesso CSP che ha generato il BLOB.
NCRYPT_PKCS7_ENVELOPE_BLOB
Esportare un BLOB busta PKCS #7. I parametri identificati dal parametro pParameterList possono o devono contenere i parametri seguenti, come indicato dalla colonna Required o facoltativa.
Parametro | Obbligatoria o facoltativa |
---|---|
NCRYPTBUFFER_CERT_BLOB | Necessario |
NCRYPTBUFFER_PKCS_ALG_OID | Necessario |
NCRYPTBUFFER_PKCS_ALG_PARAM | Facoltativo |
NCRYPT_PKCS8_PRIVATE_KEY_BLOB
Esportare un BLOB di chiave privata PKCS #8. I parametri identificati dal parametro pParameterList possono o devono contenere i parametri seguenti, come indicato dalla colonna Required o facoltativa.
Parametro | Obbligatoria o facoltativa |
---|---|
NCRYPTBUFFER_PKCS_ALG_OID | Facoltativo |
NCRYPTBUFFER_PKCS_ALG_PARAM | Facoltativo |
NCRYPTBUFFER_PKCS_SECRET | Facoltativo |
NCRYPT_PROTECTED_KEY_BLOB
Esportare una chiave protetta in una struttura NCRYPT_KEY_BLOB_HEADER .
Windows 8 e Windows Server 2012: inizia il supporto per questo valore.
[in, optional] pParameterList
Indirizzo di una struttura NCryptBufferDesc che riceve informazioni sui parametri per la chiave. Questo parametro può essere NULL se queste informazioni non sono necessarie.
[out, optional] pbOutput
Indirizzo di un buffer che riceve il BLOB della chiave. Il parametro cbOutput contiene le dimensioni di questo buffer. Se questo parametro è NULL, questa funzione inserisce le dimensioni necessarie, in byte, nel DWORD a cui punta il parametro pcbResult .
[in] cbOutput
Dimensione, in byte, del buffer pbOutput .
[out] pcbResult
Indirizzo di una variabile DWORD che riceve il numero di byte copiati nel buffer pbOutput . Se il parametro pbOutput è NULL, questa funzione inserisce le dimensioni richieste, in byte, in DWORD a cui punta questo parametro.
[in] dwFlags
Flag che modificano il comportamento della funzione. Questo può essere zero o una combinazione di uno o più dei valori seguenti. Il set di flag validi è specifico per ogni provider di archiviazione delle chiavi. Il flag seguente si applica a tutti i provider.
Valore | Significato |
---|---|
NCRYPT_SILENT_FLAG | Richiede che il provider di servizi chiave (KSP) non visualizzi alcuna interfaccia utente. Se il provider deve visualizzare l'interfaccia utente da operare, la chiamata ha esito negativo e il KSP deve impostare il codice di errore NTE_SILENT_CONTEXT come ultimo errore. |
Valore restituito
Restituisce un codice di stato che indica l'esito positivo o negativo della funzione.
I codici restituiti possibili includono, ma non sono limitati a, i seguenti.
Codice restituito | Descrizione |
---|---|
ERROR_SUCCESS | La funzione ha avuto esito positivo. |
NTE_BAD_FLAGS | Il parametro dwFlags contiene un valore non valido. |
NTE_BAD_KEY_STATE | La chiave specificata dal parametro hKey non è valida. La causa più comune di questo errore è che la chiave non è stata completata usando la funzione NCryptFinalizeKey . |
NTE_BAD_TYPE | La chiave specificata dal parametro hKey non può essere esportata nel tipo BLOB specificato dal parametro pszBlobType . |
NTE_INVALID_HANDLE | Il parametro hKey ohExportKey non è valido. |
NTE_INVALID_PARAMETER | Uno o più parametri non sono validi. |
Commenti
Un servizio non deve chiamare questa funzione dalla funzione StartService. Se un servizio chiama questa funzione dalla funzione StartService , può verificarsi un deadlock e il servizio potrebbe interrompere la risposta.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | ncrypt.h |
Libreria | Ncrypt.lib |
DLL | Ncrypt.dll |