Freigeben über


DecryptMessage-Funktion (Kerberos)

Die DecryptMessage-Funktion (Kerberos) entschlüsselt eine Nachricht. Einige Pakete ver- und entschlüsseln keine Nachrichten, sondern führen einen Integritätshash aus und überprüfen sie.

Hinweis

EncryptMessage (Kerberos) und DecryptMessage (Kerberos) können gleichzeitig aus zwei verschiedenen Threads in einem einzelnen SSPI-Kontext ( Security Support Provider Interface ) aufgerufen werden, wenn ein Thread verschlüsselt und der andere entschlüsselt. 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 , die vom Typ SECBUFFER_DATA sein können. Der Puffer enthält die verschlüsselte Nachricht. Die verschlüsselte Nachricht wird an Ort und Stelle entschlüsselt, wodurch der ursprüngliche Inhalt des Puffers überschrieben wird.

MessageSeqNo [in]

Die von der Transportanwendung erwartete Sequenznummer, falls vorhanden. Wenn die Transportanwendung keine Sequenznummern verwaltet, muss dieser Parameter auf 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
SECQOP_WRAP_NO_ENCRYPT Die Nachricht wurde nicht verschlüsselt, aber ein Header oder Anhänger wurde erstellt.

Hinweis

KERB_WRAP_NO_ENCRYPT hat den gleichen Wert und die gleiche Bedeutung.

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, gibt sie einen der folgenden Fehlercodes zurück.

Rückgabecode Beschreibung
SEC_E_INCOMPLETE_MESSAGE Die Daten im Eingabepuffer sind unvollständig. Die Anwendung muss weitere Daten vom Server lesen und DecryptMessage (Kerberos) erneut aufrufen.
SEC_E_OUT_OF_SEQUENCE Die Nachricht wurde nicht in der richtigen Reihenfolge empfangen.

Bemerkungen

Manchmal liest eine Anwendung Daten von der Remotepartei, versucht, sie mithilfe von DecryptMessage (Kerberos) zu entschlüsseln, und ermittelt, dass DecryptMessage (Kerberos) erfolgreich war, aber die Ausgabepuffer leer sind. Dies ist ein normales Verhalten, und Anwendungen müssen in der Lage sein, damit umzugehen.

Informationen zur Zusammenarbeit mit GSSAPI finden Sie unter SSPI/Kerberos-Interoperabilität mit GSSAPI.

Windows XP: Diese Funktion wurde auch als UnsealMessage bezeichnet. Anwendungen sollten jetzt nur DecryptMessage (Kerberos) verwenden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Header Sspi.h (einschließlich Security.h)
Bibliothek Secur32.lib
DLL Secur32.dll

Siehe auch