Funzione DecryptMessage (Digest)
La funzione DecryptMessage (Digest) decrittografa un messaggio. Alcuni pacchetti non crittografano e decrittografano i messaggi, ma invece eseguono e controllano un hash di integrità.
Il provider di supporto per la sicurezza del digest fornisce la riservatezza della crittografia e della decrittografia per i messaggi scambiati tra client e server solo come meccanismo SASL.
Nota
EncryptMessage (Digest) e DecryptMessage (Digest) possono essere chiamati contemporaneamente da due thread diversi in un singolo contesto di interfaccia del provider di supporto della sicurezza(SSPI) se un thread sta crittografando 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(
PCtxtHandle phContext,
PSecBufferDesc pMessage,
unsigned long MessageSeqNo,
unsigned long *pfQOP
);
Parametri
phContext [in]
Handle per il contesto di sicurezza da usare 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.
Quando si usa il provider di servizi di gestione del digest, in 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.
MessageSeqNo [in]
Numero di sequenza previsto dall'applicazione di trasporto, se presente. Se l'applicazione di trasporto non mantiene i numeri di sequenza, questo parametro deve essere impostato su zero.
Quando si usa il provider di servizi di spostamento del digest, questo parametro deve essere impostato su zero. Il provider di servizi di gestione della sequenza gestisce internamente la numerazione della sequenza.
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 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. |
|
Quando si usa il provider di servizi di avvio del 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 di gestione del digest. |
SEC_E_CRYPTO_SYSTEM_INVALID | La crittografia scelta per il contesto di sicurezza non è supportata. Usato con il provider di servizi di gestione del 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 di gestione del digest. |
SEC_E_MESSAGE_ALTERED | Il messaggio è stato modificato. Usato con il provider di servizi di gestione del 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 di gestione del digest. |
Commenti
A volte un'applicazione legge i dati dalla parte remota, tenta di decrittografarlo usando DecryptMessage (Digest) e individua che DecryptMessage (Digest) 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 è stata nota anche come UnsealMessage. Le applicazioni devono ora usare DecryptMessage (Digest).
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 |