Freigeben über


DecryptMessage-Funktion (sspi.h)

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

Der Digest Security Support Provider (SSP) bietet Verschlüsselungs- und Entschlüsselungsgeheimnis für Nachrichten, die zwischen Client und Server ausgetauscht werden, nur als SASL-Mechanismus.

HinweisEncryptMessage (Digest) und DecryptMessage (Digest) 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 wird. Wenn mehr als ein Thread verschlüsselt oder mehr als ein Thread entschlüsselt wird, sollte jeder Thread einen eindeutigen Kontext erhalten.
 

Syntax

SECURITY_STATUS SEC_ENTRY DecryptMessage(
  [in]      PCtxtHandle    phContext,
  [in, out] PSecBufferDesc pMessage,
  [in]      unsigned long  MessageSeqNo,
  [out]     unsigned long  *pfQOP
);

Parameter

[in] phContext

Ein Handle für den Sicherheitskontext , der zum Entschlüsseln der Nachricht verwendet werden soll.

[in, out] pMessage

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 an Ort und Stelle entschlüsselt, wobei der ursprüngliche Inhalt des Puffers überschrieben wird.

Wenn Sie den Digest-SSP verwenden, verweist die Struktur bei der Eingabe auf eine oder mehrere SecBuffer-Strukturen . Eines davon muss vom Typ SECBUFFER_DATA oder SECBUFFER_STREAM sein und die verschlüsselte Nachricht enthalten.

[in] MessageSeqNo

Die Sequenznummer, die von der Transportanwendung erwartet wird, falls vorhanden. Wenn die Transportanwendung keine Sequenznummern verwaltet, muss dieser Parameter auf 0 festgelegt werden.

Wenn Sie den Digest-SSP verwenden, muss dieser Parameter auf 0 festgelegt werden. Der Digest-SSP verwaltet die Sequenznummerierung intern.

[out] pfQOP

Ein Zeiger auf eine Variable vom Typ ULONG , die paketspezifische Flags empfängt, die die Qualität des Schutzes angeben.

Dieser Parameter kann eines der folgenden Flags sein.

Wert Bedeutung
SECQOP_WRAP_NO_ENCRYPT
Die Nachricht wurde nicht verschlüsselt, aber ein Header oder Trailer wurde erstellt.
Hinweis KERB_WRAP_NO_ENCRYPT hat den gleichen Wert und die gleiche Bedeutung.
 
SIGN_ONLY
Verwenden Sie bei Verwendung des Digest-SSP dieses Flag, wenn der Sicherheitskontext so festgelegt ist, dass nur die Signatur überprüft wird. Weitere Informationen finden Sie unter Qualität des Schutzes.

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_BUFFER_TOO_SMALL
Der Nachrichtenpuffer ist zu klein. Wird mit dem Digest-SSP verwendet.
SEC_E_CRYPTO_SYSTEM_INVALID
Die für den Sicherheitskontext ausgewählte Verschlüsselung wird nicht unterstützt. Wird mit dem Digest-SSP verwendet.
SEC_E_INCOMPLETE_MESSAGE
Die Daten im Eingabepuffer sind unvollständig. Die Anwendung muss weitere Daten vom Server lesen und DecryptMessage (Digest) erneut aufrufen.
SEC_E_INVALID_HANDLE
Im parameter phContext wurde ein ungültiges Kontexthandle angegeben. Wird mit dem Digest-SSP verwendet.
SEC_E_MESSAGE_ALTERED
Die Nachricht wurde geändert. Wird mit dem Digest-SSP verwendet.
SEC_E_OUT_OF_SEQUENCE
Die Nachricht wurde nicht in der richtigen Reihenfolge empfangen.
SEC_E_QOP_NOT_SUPPORTED
Weder Vertraulichkeit noch Integrität werden vom Sicherheitskontext unterstützt. Wird mit dem Digest-SSP verwendet.

Hinweise

Manchmal liest eine Anwendung Daten von der Remotepartei, versucht, sie mithilfe von DecryptMessage (Digest) zu entschlüsseln, und ermittelt, dass DecryptMessage (Digest) 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 (Digest) verwenden.

Anforderungen

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

Weitere Informationen

EncryptMessage (Digest)

SSPI-Funktionen

SecBuffer

SecBufferDesc