Funzione DecryptMessage (sspi.h)

La funzione DecryptMessage (Digest) decrittografa un messaggio. Alcuni pacchetti non crittografano e decrittografano i messaggi, ma eseguono e controllano un hash di integrità.

Il provider di supporto per la sicurezza digest (SSP) fornisce la riservatezza della crittografia e della decrittografia per i messaggi scambiati tra client e server solo come meccanismo SASL.

NotaEncryptMessage (Digest) e DecryptMessage (Digest) possono essere chiamati contemporaneamente da due thread diversi in un unico contesto SSPI ( Security Support Provider Interface ) se un thread esegue la crittografia e l'altro sta decrittografando. Se più thread crittografa o più thread decrittografa, ogni thread deve ottenere un contesto univoco.
 

Sintassi

SECURITY_STATUS SEC_ENTRY DecryptMessage(
  [in]      PCtxtHandle    phContext,
  [in, out] PSecBufferDesc pMessage,
  [in]      unsigned long  MessageSeqNo,
  [out]     unsigned long  *pfQOP
);

Parametri

[in] phContext

Handle per il contesto di sicurezza da utilizzare per decrittografare il messaggio.

[in, out] pMessage

Puntatore a una struttura SecBufferDesc . In input, la struttura fa riferimento a una o più strutture SecBuffer . Almeno uno di questi deve essere di tipo SECBUFFER_DATA. Tale buffer contiene il messaggio crittografato. Il messaggio crittografato viene decrittografato sul posto, sovrascrivendo il contenuto originale del buffer.

Quando si usa il provider di servizi condivisi digest, all'input, la struttura fa riferimento a una o più strutture SecBuffer . Uno di questi deve essere di tipo SECBUFFER_DATA o SECBUFFER_STREAM e deve contenere il messaggio crittografato.

[in] MessageSeqNo

Numero di sequenza previsto dall'applicazione di trasporto, se presente. Se l'applicazione di trasporto non gestisce i numeri di sequenza, questo parametro deve essere impostato su zero.

Quando si usa il provider di servizi condivisi digest, questo parametro deve essere impostato su zero. Il provider di servizi condivisi digest gestisce internamente la numerazione delle sequenze.

[out] pfQOP

Puntatore a una variabile di tipo ULONG che riceve flag specifici del pacchetto che indicano la qualità della protezione.

Questo parametro può essere uno dei flag seguenti.

Valore Significato
SECQOP_WRAP_NO_ENCRYPT
Il messaggio non è stato crittografato, ma è stata prodotta un'intestazione o un trailer.
Nota KERB_WRAP_NO_ENCRYPT ha lo stesso valore e lo stesso significato.
 
SIGN_ONLY
Quando si usa il provider di servizi condivisi digest, usare questo flag quando il contesto di sicurezza è impostato per verificare solo la firma . Per altre informazioni, vedere Qualità della protezione.

Valore restituito

Se la funzione verifica che il messaggio sia stato ricevuto nella sequenza corretta, la funzione restituisce SEC_E_OK.

Se la funzione non riesce a decrittografare il messaggio, restituisce uno dei codici di errore seguenti.

Codice restituito Descrizione
SEC_E_BUFFER_TOO_SMALL
Il buffer dei messaggi è troppo piccolo. Usato con il provider di servizi condivisi digest.
SEC_E_CRYPTO_SYSTEM_INVALID
La crittografia scelta per il contesto di sicurezza non è supportata. Usato con il provider di servizi condivisi digest.
SEC_E_INCOMPLETE_MESSAGE
I dati nel buffer di input sono incompleti. L'applicazione deve leggere di nuovo altri dati dal server e chiamare di nuovo DecryptMessage (Digest).
SEC_E_INVALID_HANDLE
Handle di contesto non valido specificato nel parametro phContext . Usato con il provider di servizi condivisi digest.
SEC_E_MESSAGE_ALTERED
Il messaggio è stato modificato. Usato con il provider di servizi condivisi digest.
SEC_E_OUT_OF_SEQUENCE
Il messaggio non è stato ricevuto nella sequenza corretta.
SEC_E_QOP_NOT_SUPPORTED
Né la riservatezza né l'integrità sono supportate dal contesto di sicurezza. Usato con il provider di servizi condivisi digest.

Commenti

A volte un'applicazione leggerà i dati dall'entità remota, tenterà di decrittografarlo usando DecryptMessage (Digest) e scoprirà che DecryptMessage (Digest) è riuscito, ma i buffer di output sono vuoti. Si tratta di un comportamento normale e le applicazioni devono essere in grado di gestirle.

Windows XP: Questa funzione era nota anche come UnsealMessage. Le applicazioni ora usano solo DecryptMessage (Digest).

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione sspi.h (include Security.h)
Libreria Secur32.lib
DLL Secur32.dll

Vedi anche

EncryptMessage (digest)

Funzioni SSPI

SecBuffer

SecBufferDesc