Funzione DecryptMessage (Kerberos)
La funzione DecryptMessage (Kerberos) decrittografa un messaggio. Alcuni pacchetti non crittografano e decrittografano i messaggi, ma eseguono e controllano un hash di integrità.
Nota
EncryptMessage (Kerberos) e DecryptMessage (Kerberos) 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 che possono essere di tipo SECBUFFER_DATA. Il 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 è stato prodotto 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 (Kerberos). |
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 (Kerberos) e scoprirà che DecryptMessage (Kerberos) è riuscito, ma i buffer di output sono vuoti. Si tratta di un comportamento normale e le applicazioni devono essere in grado di gestirle.
Per informazioni sull'interoperabilità con GSSAPI, vedere Interoperabilità SSPI/Kerberos con GSSAPI.
Windows XP: Questa funzione era nota anche come UnsealMessage. Le applicazioni ora usano solo DecryptMessage (Kerberos).
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 |