DecryptMessage-Funktion (Digest)
Die DecryptMessage-Funktion (Digest) entschlüsselt eine Nachricht. Einige Pakete verschlüsseln und entschlüsseln nachrichten nicht, sondern führen stattdessen einen Integritätshash aus und überprüfen diesen.
Der SSP (Digest Security Support Provider) bietet Verschlüsselungs- und Entschlüsselungsgeheimnisse nur für Nachrichten, die zwischen Client und Server als SASL-Mechanismus ausgetauscht werden.
Hinweis
EncryptMessage (Digest) und DecryptMessage (Digest) 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 mehrere Threads verschlüsselt oder mehrere Threads entschlüsselt werden, sollte jeder Thread einen eindeutigen Kontext erhalten.
Syntax
SECURITY_STATUS SEC_ENTRY DecryptMessage(
PCtxtHandle phContext,
PSecBufferDesc pMessage,
unsigned long MessageSeqNo,
unsigned long *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 dieser Typen 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 und überschreiben den ursprünglichen Inhalt des Puffers.
Bei Verwendung des Digest-SSP verweist die Struktur bei der Eingabe auf eine oder mehrere SecBuffer-Strukturen. Eine dieser Typen muss vom Typ SECBUFFER DATA oder _ SECBUFFER STREAM sein und die verschlüsselte Nachricht _ enthalten.
MessageSeqNo [ In]
Die sequenznummer, die von der Transportanwendung erwartet wird, sofern eine davon der Fall ist. Wenn die Transportanwendung keine Sequenznummern verwaltet, muss dieser Parameter auf 0 (null) festgelegt werden.
Wenn Sie den Digest-SSP verwenden, muss dieser Parameter auf 0 (null) festgelegt werden. Der Digest-SSP verwaltet die Sequenznummerierung intern.
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 eines der folgenden Flags sein.
| Wert | Bedeutung |
|---|---|
|
Die Nachricht wurde nicht verschlüsselt, aber es wurde ein Header oder Nachspann erstellt.[!Note] |
|
Wenn Sie den Digest-SSP verwenden, verwenden Sie dieses Flag, wenn der Sicherheitskontext so festgelegt ist, dass nur die Signatur überprüft wird. Weitere Informationen finden Sie unter Quality of Protection. |
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 _ UNVOLLSTÄNDIGE _ NACHRICHT | Die Daten im Eingabepuffer sind unvollständig. Die Anwendung muss weitere Daten vom Server lesen und DecryptMessage (Digest) erneut aufrufen. |
| SEC _ E _ UNGÜLTIGES _ HANDLE | Im phContext-Parameter wurde ein ungültiges Kontexthand handle 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. |
Bemerkungen
Manchmal liest eine Anwendung Daten von der Remote-Partei, versucht, sie mithilfe von DecryptMessage (Digest) zu entschlüsseln, und festgestellt, dass DecryptMessage (Digest) erfolgreich war, die Ausgabepuffer jedoch leer sind. Dies ist ein normales Verhalten, und Anwendungen müssen damit umgehen können.
Windows XP: Diese Funktion wurde auch als UnsealMessage bezeichnet. Anwendungen sollten jetzt nur DecryptMessage (Digest) verwenden.
Requirements (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 (einschließlich Security.h) |
| Bibliothek | Secur32.lib |
| DLL | Secur32.dll |