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 |