Condividi tramite


Funzione NCryptSignHash (ncrypt.h)

La funzione NCryptSignHash crea una firma di un valore hash.

Sintassi

SECURITY_STATUS NCryptSignHash(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PBYTE             pbHashValue,
  [in]           DWORD             cbHashValue,
  [out]          PBYTE             pbSignature,
  [in]           DWORD             cbSignature,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Parametri

[in] hKey

Handle della chiave da usare per firmare l'hash.

[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] pbHashValue

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

[in] cbHashValue

Numero di byte nel buffer pbHashValue da firmare.

[out] pbSignature

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

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

[in] cbSignature

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

[out] pcbResult

Puntatore a una variabile DWORD che riceve il numero di byte copiati nel buffer pbSignature .

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

[in] dwFlags

Contrassegni che modificano il comportamento della 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 impostato su zero.

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

Valore Significato
BCRYPT_PAD_PKCS1
Usare lo schema di riempimento PKCS1. Il parametro pPaddingInfo è un puntatore a una struttura BCRYPT_PKCS1_PADDING_INFO .
BCRYPT_PAD_PSS
Usare lo schema di riempimento della firma probabilistica (PSS). Il parametro pPaddingInfo è un puntatore a una struttura BCRYPT_PSS_PADDING_INFO .
NCRYPT_SILENT_FLAG
Richiede che il provider di servizi chiave (KSP) non visualizzi alcuna interfaccia utente. Se il provider deve visualizzare l'interfaccia utente da operare, la chiamata ha esito negativo e il KSP deve impostare il codice di errore NTE_SILENT_CONTEXT come ultimo errore.

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
ERROR_SUCCESS
La funzione ha avuto esito positivo.
NTE_BAD_ALGID
La chiave rappresentata dal parametro hKey non supporta la firma.
NTE_BAD_FLAGS
Il parametro dwFlags contiene un valore non valido.
NTE_INVALID_HANDLE
Il parametro hKey non è valido.
NTE_INVALID_PARAMETER
Uno o più parametri non sono validi.
NTE_NO_MEMORY
Si è verificato un errore di allocazione della memoria.

Commenti

Un servizio non deve chiamare questa funzione dalla funzione StartService. Se un servizio chiama questa funzione dalla funzione StartService, può verificarsi un deadlock e il servizio potrebbe interrompere la risposta.

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 ncrypt.h
Libreria Ncrypt.lib
DLL Ncrypt.dll