Share via


Funzione BCryptVerifySignature (bcrypt.h)

La funzione BCryptVerifySignature verifica che la firma specificata corrisponda all'hash specificato.

Sintassi

NTSTATUS BCryptVerifySignature(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbHash,
  [in]           ULONG             cbHash,
  [in]           PUCHAR            pbSignature,
  [in]           ULONG             cbSignature,
  [in]           ULONG             dwFlags
);

Parametri

[in] hKey

Handle della chiave da usare per decrittografare la firma. Questa deve essere una chiave identica o la parte pubblica della coppia di chiavi usata per firmare i dati con la funzione BCryptSignHash .

[in, optional] pPaddingInfo

Puntatore a una struttura che contiene informazioni di riempimento. 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] pbHash

Indirizzo di un buffer contenente l'hash dei dati. Il parametro cbHash contiene le dimensioni di questo buffer.

[in] cbHash

Dimensioni, in byte, del buffer pbHash .

[in] pbSignature

Indirizzo di un buffer contenente l'hash firmato dei dati. La funzione BCryptSignHash viene usata per creare la firma. Il parametro cbSignature contiene le dimensioni di questo buffer.

[in] cbSignature

Dimensioni, in byte, del buffer pbSignature . La funzione BCryptSignHash viene usata per creare la firma.

[in] dwFlags

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

Se la chiave è una chiave simmetrica, questo parametro non viene usato e deve essere zero.

Se la chiave è una chiave asimmetrica, questo può essere uno dei valori seguenti.

Valore Significato
BCRYPT_PAD_PKCS1
Lo schema di riempimento PKCS1 è stato usato quando è stata creata la firma. Il parametro pPaddingInfo è un puntatore a una struttura BCRYPT_PKCS1_PADDING_INFO .
BCRYPT_PAD_PSS
Lo schema di spaziatura della firma probabilistica (PSS) è stato usato quando è stata creata la firma. 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 sono limitati a, i seguenti.

Codice restituito Descrizione
STATUS_SUCCESS
La funzione ha avuto esito positivo.
STATUS_INVALID_SIGNATURE
La firma non è stata verificata.
NTE_NO_MEMORY
Si è verificato un errore di allocazione della memoria.
STATUS_INVALID_PARAMETER
Uno dei parametri forniti non è valido.
STATUS_INVALID_HANDLE
L'handle della chiave specificato dal parametro hKey non è valido.
STATUS_NOT_SUPPORTED
Il provider di algoritmi usato per creare l'handle di chiavi specificato dal parametro hKey non è un algoritmo di firma.

Commenti

Questa funzione calcola la firma con la chiave specificata e quindi confronta il valore della firma calcolata con il valore di firma specificato.

Per usare questa funzione, è necessario eseguire l'hash dei dati usando lo stesso algoritmo hash usato per creare il valore hash firmato. Se applicabile, è necessario specificare anche lo stesso schema di riempimento specificato al momento della creazione della firma.

A seconda delle modalità di processore supportate da un provider, È possibile chiamare BCryptVerifySignature 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 usando il flag BCRYPT_PROV_DISPATCH e tutti i puntatori passati alla funzione BCryptVerifySignature devono fare riferimento a memoria non paginata (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

BCryptSignHash