Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die DecryptMessage -Funktion (Digest) entschlüsselt eine Nachricht. Einige Pakete verschlüsseln und entschlüsseln keine Nachrichten, sondern führen einen Integritätshash aus und überprüfen sie.
Der Digest-Sicherheitsunterstützungsanbieter (Digest Security Support Provider , SSP) bietet Verschlüsselungs- und Entschlüsselungsgeheimnis für Nachrichten, die nur als SASL-Mechanismus zwischen Client und Server ausgetauscht werden.
Hinweis
EncryptMessage (Digest) und DecryptMessage (Digest) können gleichzeitig aus zwei verschiedenen Threads in einem einzigen 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 abrufen.
Syntax
SECURITY_STATUS SEC_ENTRY DecryptMessage(
PCtxtHandle phContext,
PSecBufferDesc pMessage,
unsigned long MessageSeqNo,
unsigned long *pfQOP
);
Die Parameter
phContext [in]
Ein Handle für den Sicherheitskontext , der zum Entschlüsseln der Nachricht verwendet werden soll.
pMessage [ein, aus]
Ein Zeiger auf eine SecBufferDesc-Struktur . Bei der Eingabe verweist die Struktur auf mindestens eine SecBuffer-Struktur . Mindestens einer dieser Typen muss SECBUFFER_DATA sein. Dieser Puffer enthält die verschlüsselte Nachricht. Die verschlüsselte Nachricht wird direkt entschlüsselt, wobei der ursprüngliche Inhalt des Puffers überschrieben wird.
Bei Verwendung des Digest-SSP verweist die Struktur auf eine oder mehrere SecBuffer-Strukturen . Einer davon muss vom Typ SECBUFFER_DATA oder SECBUFFER_STREAM sein, und er muss die verschlüsselte Nachricht enthalten.
MessageSeqNo [eingehen]
Die Sequenznummer, die von der Transportanwendung erwartet wird, falls vorhanden. Wenn die Transportanwendung keine Sequenznummern verwaltet, muss dieser Parameter auf Null festgelegt werden.
Bei Verwendung des Digest-SSP muss dieser Parameter auf Null festgelegt werden. Der Digest-SSP verwaltet die Sequenznummerierung intern.
pfQOP [aus]
Ein Zeiger auf eine Variable vom Typ ULONG , die paketspezifische Flags empfängt, die die Qualität des Schutzes angeben.
Dieser Parameter kann eine der folgenden Flags sein.
| Wert | Bedeutung |
|---|---|
|
SECQOP_WRAP_NO_ENCRYPT |
Die Nachricht wurde nicht verschlüsselt, aber eine Kopfzeile oder ein Trailer wurde erstellt. Anmerkung: KERB_WRAP_NO_ENCRYPT hat denselben Wert und dieselbe Bedeutung. |
|
Wenn Sie den Digest-SSP verwenden, verwenden Sie dieses Kennzeichen, 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, wird eine der folgenden Fehlercodes zurückgegeben.
| 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 Chiffre 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 | Ein ungültiges Kontexthandle wurde im phContext-Parameter 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 Remotepartei, versucht, sie mithilfe von DecryptMessage (Digest) zu entschlüsseln und zu ermitteln, dass DecryptMessage (Digest) erfolgreich war, aber die Ausgabepuffer sind leer. 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.
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindest unterstützter Client | Windows XP [nur Desktop-Apps] |
| Unterstützter Server (Mindestversion) | Windows Server 2003 [Nur Desktop-Apps] |
| Kopfzeile | Sspi.h (einschließlich Security.h) |
| Bibliothek | Secur32.lib |
| DLL | Secur32.dll |