Funzione DecryptMessage (Negotiate)

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

Nota

EncryptMessage (Negotiate) e DecryptMessage (Negotiate) 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,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

Parametri

phContext [in]

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

pMessage [in, out]

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.

MessageSeqNo [in]

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.

pfQOP [out]

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

Questo parametro può essere il flag seguente.

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.

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_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 (Negotiate).
SEC_E_OUT_OF_SEQUENCE Il messaggio non è stato ricevuto nella sequenza corretta.

Commenti

A volte un'applicazione leggerà i dati dall'entità remota, tenterà di decrittografarlo usando DecryptMessage (Negotiate) e scoprirà che DecryptMessage (Negotiate) ha avuto esito positivo, 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 (Negotiate).

Requisiti

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

Vedi anche