Funzione BCryptExportKey (bcrypt.h)
La funzione BCryptExportKey
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 quando si esportano 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 Windows Server 2008 e Windows Vista: Questo tipo di BLOB non è supportato. |
|
Esportare una coppia di chiavi Diffie-Hellman pubblica/privata. Il buffer di pbOutput |
|
Esportare una chiave pubblica Diffie-Hellman . Il buffer di pbOutput |
|
Esportare una coppia di chiavi pubblica/privata DSA. Il buffer di pbOutput Windows 8: inizia il supporto per BCRYPT_DSA_KEY_BLOB_V2. |
|
Esportare una chiave pubblica DSA. Il buffer di pbOutput Windows 8: inizia il supporto per BCRYPT_DSA_KEY_BLOB_V2. |
|
Esportare un di crittografia a curva ellittica (ECC) chiave privata. Il buffer pbOutput riceve una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati della chiave. |
|
Esportare una chiave pubblica ECC. Il buffer pbOutput riceve una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati della chiave. |
|
Esportare una chiave simmetrica in un BLOB di dati. Il buffer pbOutput |
|
Esportare una chiave simmetrica in un formato specifico di un singolo provider di servizi di crittografia (CSP). I BLOB opachi non sono trasferiscibili 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 |
|
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 |
|
Esportare una coppia di chiavi pubblica/privata RSA completa. Il buffer pbOutput riceve una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati della chiave. Questo BLOB includerà materiale della chiave aggiuntivo 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 della chiave. |
|
Esportare una chiave pubblica RSA. Il buffer pbOutput riceve una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati della chiave. |
|
Esportare un BLOB di chiavi private |
|
Esportare un BLOB di chiave pubblica legacy Diffie-Hellman versione 3 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 formato 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, nel 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 di pbOutput. Se il parametro pbOutput è NULL, questa funzione inserisce le dimensioni richieste, in byte, nel 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, ma non solo, quanto segue.
Codice restituito | Descrizione |
---|---|
|
La funzione ha avuto esito positivo. |
|
Le dimensioni specificate dal parametro cbOutput |
|
L'handle della chiave nel parametro hKey |
|
Uno o più parametri non sono validi. |
|
Il tipo BLOB specificato non è supportato dal provider. |
Osservazioni
A seconda delle modalità del processore supportate da un provider, BCryptExportKey può essere chiamato 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 bloccata o non di pagina.
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.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista [app desktop | App UWP] |
server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
intestazione |
bcrypt.h |
libreria |
Bcrypt.lib |
dll | Bcrypt.dll |