Funzione BCryptDuplicateHash (bcrypt.h)

La funzione BCryptDuplicateHash duplica un oggetto Hash o Message Authentication Code (MAC) esistente. L'oggetto duplicato contiene tutti gli stati e i dati contenuti nell'oggetto originale al momento della duplicazione.

Sintassi

NTSTATUS BCryptDuplicateHash(
  [in]  BCRYPT_HASH_HANDLE hHash,
  [out] BCRYPT_HASH_HANDLE *phNewHash,
  [out] PUCHAR             pbHashObject,
  [in]  ULONG              cbHashObject,
  [in]  ULONG              dwFlags
);

Parametri

[in] hHash

Handle dell'oggetto hash o MAC da duplicare.

[out] phNewHash

Puntatore a un valore BCRYPT_HASH_HANDLE che riceve l'handle che rappresenta l'oggetto hash o MAC duplicato.

[out] pbHashObject

Puntatore a un buffer che riceve l'hash duplicato o l'oggetto MAC. Il parametro cbHashObject 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 hash per l'algoritmo specificato.

Quando viene rilasciato l'handle hash duplicato, liberare questa memoria.

[in] cbHashObject

Dimensione, in byte, del buffer pbHashObject .

[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 hash specificato dal parametro cbHashObject non sono sufficienti per contenere l'oggetto hash.
STATUS_INVALID_HANDLE
L'handle hash nel parametro hHash non è valido.
STATUS_INVALID_PARAMETER
Uno o più parametri non sono validi.

Commenti

Questa funzione è utile quando si calcola un hash o MAC su un blocco di dati comuni. Dopo l'elaborazione dei dati comuni, l'oggetto hash o MAC può essere duplicato e quindi i dati univoci possono essere aggiunti ai singoli oggetti.

A seconda delle modalità del processore supportate da un provider, BCryptDuplicateHash 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 hHash deve essere derivato da un handle di algoritmo restituito da un provider aperto utilizzando il flag BCRYPT_PROV_DISPATCH e tutti i puntatori passati alla funzione BCryptDestroyKey devono fare riferimento a memoria non bloccata o non di paging.

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