Condividi tramite


Funzione BCryptSignHash (bcrypt.h)

La funzione BCryptSignHash crea una firma di un valore hash.

Sintassi

NTSTATUS BCryptSignHash(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbInput,
  [in]           ULONG             cbInput,
  [out]          PUCHAR            pbOutput,
  [in]           ULONG             cbOutput,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

Parametri

[in] hKey

Handle della chiave da usare per firmare l'hash.

[in, optional] pPaddingInfo

Puntatore a una struttura che contiene informazioni sulla spaziatura interna. Il tipo effettivo di struttura a cui punta questo parametro dipende dal valore del parametro dwFlags. Questo parametro viene usato solo con chiavi asimmetriche e deve essere NULL in caso contrario.

[in] pbInput

Puntatore a un buffer contenente il valore hash da firmare. Il parametro cbInput contiene le dimensioni di questo buffer.

[in] cbInput

Numero di byte nel buffer pbInput da firmare.

[out] pbOutput

Indirizzo di un buffer per ricevere la firma prodotta da questa funzione. Il parametro cbOutput contiene le dimensioni di questo buffer.

Se questo parametro è NULL, questa funzione calcolerà le dimensioni necessarie per la firma e restituirà le dimensioni nella posizione a cui punta il parametro pcbResult.

[in] cbOutput

Dimensioni, in byte, del buffer di pbOutput. Questo parametro viene ignorato se il parametro pbOutput è NULL.

[out] pcbResult

Puntatore a una variabile di ULONG che riceve il numero di byte copiati nel buffer pbOutput .

Se pbOutput è NULL, riceve le dimensioni, in byte, necessarie per la firma.

[in] dwFlags

Set di flag che modificano il comportamento di questa funzione. Il set di flag consentito dipende dal tipo di chiave specificato dal parametro hKey .

Può trattarsi di uno dei valori seguenti.

Valore Significato
BCRYPT_PAD_PKCS1
Usare lo schema di spaziatura interna PKCS1. Il parametro pPaddingInfo è un puntatore a una struttura BCRYPT_PKCS1_PADDING_INFO.
BCRYPT_PAD_PSS
Usare lo schema di riempimento PSS (Probabilistic Signature Scheme). Il parametro pPaddingInfo è un puntatore a una struttura BCRYPT_PSS_PADDING_INFO.

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
STATUS_SUCCESS
La funzione ha avuto esito positivo.
STATUS_INVALID_HANDLE
L'handle di chiave specificato dal parametro hKey non è valido.
STATUS_NOT_SUPPORTED
Il provider di algoritmi usato per creare l'handle di chiave specificato dal parametro hKey non è un algoritmo di firma.
STATUS_NO_MEMORY
Si è verificato un errore di allocazione della memoria.
STATUS_BUFFER_TOO_SMALL
Le dimensioni della memoria specificate dal parametro cbOutput non sono sufficienti per contenere la firma.

Osservazioni

Questa funzione crittograferà il valore hash con la chiave specificata per creare la firma.

Per verificare successivamente che la firma sia valida, chiamare la funzione BCryptVerifySignature con una chiave identica e un hash identico dei dati originali.

A seconda delle modalità del processore supportate da un provider, è possibile chiamare BCryptSignHash dalla modalità utente o dal 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 qualsiasi puntatore passato alla funzione BCryptSignHash deve 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

Vedere anche

BCryptVerifySignature