Funzione BCryptExportKey (bcrypt.h)
La funzione BCryptExportKey esporta una chiave in un BLOB di memoria che può essere salvato in modo permanente per un uso successivo.
Sintassi
NTSTATUS BCryptExportKey(
[in] BCRYPT_KEY_HANDLE hKey,
[in] BCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[out] PUCHAR pbOutput,
[in] ULONG cbOutput,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Parametri
[in] hKey
Handle della chiave da esportare.
[in] hExportKey
Handle della chiave con cui eseguire il wrapping della chiave esportata. Utilizzare questo parametro durante l'esportazione di BLOB di tipo BCRYPT_AES_WRAP_KEY_BLOB; in caso contrario, impostarlo su NULL.
Windows Server 2008 e Windows Vista: Questo parametro non viene usato e deve essere impostato su NULL.
[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.
Valore | Significato |
---|---|
|
Esportare una chiave AES di cui è stato eseguito il wrapping. Il parametro hExportKey deve fare riferimento a un puntatore BCRYPT_KEY_HANDLE valido alla chiave di crittografia della chiave e la chiave rappresentata dal parametro hKey deve essere un multiplo di 8 byte di lunghezza.
Windows Server 2008 e Windows Vista: Questo tipo di BLOB non è supportato. |
|
Esportare una coppia di chiavi pubblica/privata Diffie-Hellman. Il buffer pbOutput riceve una struttura BCRYPT_DH_KEY_BLOB immediatamente seguita dai dati chiave. |
|
Esportare una chiave pubblica Diffie-Hellman. Il buffer pbOutput riceve una struttura BCRYPT_DH_KEY_BLOB immediatamente seguita dai dati chiave. |
|
Esportare una coppia di chiavi pubblica/privata DSA. Il buffer pbOutput riceve una struttura BCRYPT_DSA_KEY_BLOB o BCRYPT_DSA_KEY_BLOB_V2 immediatamente seguita dai dati chiave. BCRYPT_DSA_KEY_BLOB viene usato per le lunghezze di chiave da 512 a 1024 bit. BCRYPT_DSA_KEY_BLOB_V2 viene usato per le lunghezze di chiave che superano i 1024 bit, ma sono minori o uguali a 3072 bit.
Windows 8: inizia il supporto per BCRYPT_DSA_KEY_BLOB_V2. |
|
Esportare una chiave pubblica DSA. Il buffer pbOutput riceve una struttura BCRYPT_DSA_KEY_BLOB o BCRYPT_DSA_KEY_BLOB_V2 immediatamente seguita dai dati chiave. BCRYPT_DSA_KEY_BLOB viene usato per le lunghezze di chiave da 512 a 1024 bit. BCRYPT_DSA_KEY_BLOB_V2 viene usato per le lunghezze di chiave che superano i 1024 bit, ma sono minori o uguali a 3072 bit.
Windows 8: inizia il supporto per BCRYPT_DSA_KEY_BLOB_V2. |
|
Esportare una chiave privata ecc (elliptic curve cryptography). Il buffer pbOutput riceve una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati chiave. |
|
Esportare una chiave pubblica ECC. Il buffer pbOutput riceve una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati chiave. |
|
Esportare una chiave simmetrica in un BLOB di dati. Il buffer pbOutput riceve una struttura BCRYPT_KEY_DATA_BLOB_HEADER immediatamente seguita dal BLOB della chiave. |
|
Esportare una chiave simmetrica in un formato specifico per un singolo provider di servizi di crittografia (CSP). I BLOB opachi non sono trasferibili e devono essere importati usando lo stesso CSP che ha generato il BLOB. I BLOB opachi devono essere usati solo per il trasferimento interprocesso delle chiavi e non sono adatti per essere salvati in modo permanente e letti tra versioni di un provider. |
|
Esportare una chiave pubblica generica di qualsiasi tipo. Il tipo di chiave in questo BLOB è determinato dal membro Magic della struttura BCRYPT_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 . |
|
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 . |
|
Esportare una coppia di chiavi pubblica/privata RSA. Il buffer pbOutput riceve una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati chiave. |
|
Esportare una chiave pubblica RSA. Il buffer pbOutput riceve una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati chiave. |
|
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. |
|
Esportare un BLOB di chiave pubblica Diffie-Hellman versione 3 legacy che contiene una chiave pubblica Diffie-Hellman che può essere importata tramite CryptoAPI. |
|
Esportare una coppia di chiavi pubblica/privata DSA in un formato che può essere importato tramite CryptoAPI. |
|
Esportare una chiave pubblica DSA in un modulo che può essere importato tramite CryptoAPI. |
|
Esportare una chiave privata DSA versione 2 in un modulo che può essere importato tramite CryptoAPI. |
|
Esportare una coppia di chiavi pubblica/privata RSA in un modulo che può essere importato tramite CryptoAPI. |
|
Esportare una chiave pubblica RSA in un formato che può essere importato tramite CryptoAPI. |
[out] 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 richieste, in byte, in ULONG a cui punta il parametro pcbResult .
[in] cbOutput
Contiene le dimensioni, in byte, del buffer pbOutput .
[out] pcbResult
Puntatore a un ULONG che riceve il numero di byte copiati nel buffer pbOutput . Se il parametro pbOutput è NULL, questa funzione inserisce le dimensioni richieste, in byte, in ULONG a cui punta questo parametro.
[in] dwFlags
Set di flag che modificano il comportamento di questa funzione. Non sono definiti flag per questa funzione.
Valore restituito
Restituisce un codice di stato che indica l'esito positivo o negativo della funzione.
I codici restituiti possibili includono, a titolo esemplificativo, quanto segue.
Codice restituito | Descrizione |
---|---|
|
La funzione ha avuto esito positivo. |
|
Le dimensioni specificate dal parametro cbOutput non sono sufficienti per contenere il testo crittografato. |
|
L'handle della chiave nel parametro hKey non è valido. |
|
Uno o più parametri non sono validi. |
|
Il tipo BLOB specificato non è supportato dal provider. |
Commenti
A seconda delle modalità di processore supportate da un provider, È possibile chiamare BCryptExportKey dalla modalità utente o dalla modalità kernel. I chiamanti in modalità kernel possono essere eseguiti in PASSIVE_LEVELIRQL o DISPATCH_LEVEL IRQL. Se il livello IRQL corrente è DISPATCH_LEVEL, l'handle fornito nel parametro hKey deve essere derivato da un handle di algoritmo restituito da un provider aperto con il flag BCRYPT_PROV_DISPATCH e tutti i puntatori passati alla funzione BCryptExportKey devono fare riferimento a memoria non di pagina (o bloccata).
Per chiamare questa funzione in modalità kernel, usare Cng.lib, che fa parte del Driver Development Kit (DDK). Windows Server 2008 e Windows Vista: Per chiamare questa funzione in modalità kernel, usare Ksecdd.lib.
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 | bcrypt.h |
Libreria | Bcrypt.lib |
DLL | Bcrypt.dll |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per