DecryptMessage(Negotiate)-Funktion
Die DecryptMessage (Negotiate)-Funktion entschlüsselt eine Nachricht. Einige Pakete verschlüsseln und entschlüsseln Nachrichten nicht, sondern führen stattdessen einen Integritätshashaus und überprüfen sie.
Hinweis
EncryptMessage (Negotiate) und DecryptMessage (Negotiate) können gleichzeitig von zwei verschiedenen Threads in einem SSPI-Kontext (Security Support Provider Interface) aufgerufen werden, wenn ein Thread verschlüsselt und der andere entschlüsselt wird. Wenn mehr als ein Thread verschlüsselt wird oder mehrere Threads entschlüsselt werden, sollte jeder Thread einen eindeutigen Kontext erhalten.
Syntax
SECURITY_STATUS SEC_Entry DecryptMessage(
_In_ PCtxtHandle phContext,
_Inout_ PSecBufferDesc pMessage,
_In_ ULONG MessageSeqNo,
_Out_ PULONG pfQOP
);
Parameter
phContext [ In]
Ein Handle für den Sicherheitskontext, der zum Entschlüsseln der Nachricht verwendet werden soll.
pMessage [ in, out]
Ein Zeiger auf eine SecBufferDesc-Struktur. Bei der Eingabe verweist die -Struktur auf eine oder mehrere SecBuffer-Strukturen. Mindestens eine davon muss vom Typ SECBUFFER _ DATA sein. Dieser Puffer enthält die verschlüsselte Nachricht. Die verschlüsselte Nachricht wird vor Ort entschlüsselt und überschreibt den ursprünglichen Inhalt des Puffers.
MessageSeqNo [ In]
Die von der Transportanwendung erwartete Sequenznummer, sofern vorhanden. Wenn die Transportanwendung keine Sequenznummern verwaltet, muss dieser Parameter auf 0 (null) festgelegt werden.
pfQOP [ out]
Ein Zeiger auf eine Variable vom Typ ULONG, die paketspezifische Flags empfängt, die die Qualität des Schutzes angeben.
Dieser Parameter kann das folgende Flag sein.
| Wert | Bedeutung |
|---|---|
|
Die Nachricht wurde nicht verschlüsselt, aber ein Header oder Nachspann wurde erstellt.[!Note] |
Rückgabewert
Wenn die Funktion überprüft, ob die Nachricht in der richtigen Reihenfolge empfangen wurde, gibt die Funktion SEC _ E _ OK zurück.
Wenn die Funktion die Nachricht nicht entschlüsseln kann, wird einer der folgenden Fehlercodes zurückgegeben.
| Rückgabecode | Beschreibung |
|---|---|
| SEC _ E _ INCOMPLETE _ MESSAGE | Die Daten im Eingabepuffer sind unvollständig. Die Anwendung muss weitere Daten vom Server lesen und DecryptMessage (Negotiate) erneut aufrufen. |
| SEC _ E _ OUT _ OF _ SEQUENCE | Die Nachricht wurde nicht in der richtigen Reihenfolge empfangen. |
Hinweise
Manchmal liest eine Anwendung Daten von der Remotepartei, versucht, sie mit decryptMessage (Negotiate) zu entschlüsseln, und ermittelt, dass DecryptMessage (Negotiate) erfolgreich war, aber die Ausgabepuffer leer sind. Dies ist ein normales Verhalten, und Anwendungen müssen in der Lage sein, damit umzugehen.
Windows XP: Diese Funktion wurde auch als UnsealMessage bezeichnet. Anwendungen sollten jetzt nur DecryptMessage (Negotiate) verwenden.
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) | Windows [Nur XP-Desktop-Apps] |
| Unterstützte Mindestversion (Server) | Windows Nur Server [ 2003-Desktop-Apps] |
| Header | Sspi.h (include Security.h) |
| Bibliothek | Secur32.lib |
| DLL | Secur32.dll |