Funzione BCryptDuplicateKey (bcrypt.h)

La funzione BCryptDuplicateKey crea un duplicato di una chiave simmetrica.

Sintassi

NTSTATUS BCryptDuplicateKey(
  [in]  BCRYPT_KEY_HANDLE hKey,
  [out] BCRYPT_KEY_HANDLE *phNewKey,
  [out] PUCHAR            pbKeyObject,
  [in]  ULONG             cbKeyObject,
  [in]  ULONG             dwFlags
);

Parametri

[in] hKey

Handle della chiave da duplicare. Deve trattarsi di un handle per una chiave simmetrica.

[out] phNewKey

Puntatore a una variabile BCRYPT_KEY_HANDLE che riceve l'handle della chiave duplicata. Questo handle viene usato nelle funzioni successive che richiedono una chiave, ad esempio BCryptEncrypt. Questo handle deve essere rilasciato quando non è più necessario passandolo alla funzione BCryptDestroyKey .

[out] pbKeyObject

Puntatore a un buffer che riceve l'oggetto chiave duplicato. Il parametro cbKeyObject contiene le dimensioni di questo buffer. Le dimensioni necessarie di questo buffer possono essere ottenute chiamando la funzione BCryptGetProperty per ottenere la proprietà BCRYPT_OBJECT_LENGTH . In questo modo verranno specificate le dimensioni dell'oggetto chiave per l'algoritmo specificato.

Questa memoria può essere liberata solo dopo che l'handle della chiave phNewKey viene eliminato definitivamente.

[in] cbKeyObject

Dimensione, in byte, del buffer pbKeyObject .

[in] dwFlags

Set di flag che modificano il comportamento di questa funzione. Non sono attualmente definiti flag, quindi questo parametro deve essere zero.

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
STATUS_SUCCESS
La funzione ha avuto esito positivo.
STATUS_BUFFER_TOO_SMALL
Le dimensioni dell'oggetto chiave specificato dal parametro cbKeyObject non sono sufficienti per contenere l'oggetto chiave.
STATUS_INVALID_HANDLE
L'handle di chiave nel parametro hKey non è valido. Questo valore viene restituito anche se la chiave da duplicare non è una chiave simmetrica.
STATUS_INVALID_PARAMETER
Uno o più parametri non sono validi.

Commenti

A seconda delle modalità del processore supportate da un provider, BCryptDuplicateKey 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 BCryptDuplicateKey devono fare riferimento a memoria non inpaginata (o bloccata).

Per chiamare questa funzione in modalità kernel, usare Cng.lib, che fa parte di 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