Condividi tramite


Funzione NCryptDecrypt (ncrypt.h)

La funzione NCryptDecrypt decrittografa un blocco di dati crittografati.

Sintassi

SECURITY_STATUS NCryptDecrypt(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in]           PBYTE             pbInput,
  [in]           DWORD             cbInput,
  [in, optional] VOID              *pPaddingInfo,
  [out]          PBYTE             pbOutput,
  [in]           DWORD             cbOutput,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Parametri

[in] hKey

Handle della chiave da usare per decrittografare i dati.

[in] pbInput

Indirizzo di un buffer che contiene i dati da decrittografare. Il parametro cbInput contiene le dimensioni dei dati da decrittografare. Per altre informazioni, vedere la sezione Osservazioni.

[in] cbInput

Numero di byte nel buffer pbInput da decrittografare.

[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.

[out] pbOutput

Indirizzo di un buffer che riceverà i dati decrittografati generati da questa funzione. Il parametro cbOutput contiene le dimensioni di questo buffer. Per altre informazioni, vedere la sezione Osservazioni.

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

[in] cbOutput

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

[out] pcbResult

Puntatore a una variabile DWORD che riceve il numero di byte copiati nel buffer pbOutput . Se pbOutput è NULL, questa riceve le dimensioni, in byte, necessarie per i dati decrittografati.

[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 asimmetrica, questo può essere uno dei valori seguenti.

Valore Significato
NCRYPT_NO_PADDING_FLAG
Non è stato usato alcun riempimento quando i dati sono stati crittografati. Il parametro pPaddingInfo non viene usato.
NCRYPT_PAD_OAEP_FLAG
Lo schema OAEP (Optimal Asymmetric Encryption Padding) è stato usato quando i dati sono stati crittografati. Il parametro pPaddingInfo è un puntatore a una struttura BCRYPT_OAEP_PADDING_INFO .
NCRYPT_PAD_PKCS1_FLAG
I dati sono stati riempiti con un numero casuale per arrotondare le dimensioni del blocco quando i dati sono stati crittografati. Il parametro pPaddingInfo non viene usato.
 

Il valore seguente può essere usato per qualsiasi chiave.

Valore Significato
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_FLAGS
Il parametro dwFlags contiene un valore non valido.
NTE_BUFFER_TOO_SMALL
Le dimensioni specificate dal parametro cbOutput non sono sufficienti per contenere i dati decrittografati.
NTE_INVALID_HANDLE
Il parametro hKey non è valido.
NTE_INVALID_PARAMETER
Uno o più parametri non sono validi.
NTE_PERM
Impossibile usare la chiave identificata dal parametro hKey per la decrittografia.

Commenti

I parametri pbInput e pbOutput possono puntare allo stesso buffer. In questo caso, questa funzione eseguirà la decrittografia sul posto.

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

Vedi anche

NCryptEncrypt