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 Funktion EncryptMessage (NTLM) verschlüsselt eine Nachricht, um Datenschutz bereitzustellen. EncryptMessage (NTLM) ermöglicht es einer Anwendung, zwischen kryptografischen Algorithmen auszuwählen, die vom ausgewählten Mechanismus unterstützt werden. Die EncryptMessage (NTLM) -Funktion verwendet den Sicherheitskontext , auf den vom Kontexthandle verwiesen wird. Einige Pakete verfügen nicht über Nachrichten, die verschlüsselt oder entschlüsselt werden sollen, sondern stellen einen Integritätshash bereit, der überprüft werden kann.
Hinweis
EncryptMessage (NTLM) und DecryptMessage (NTLM) 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 EncryptMessage(
_In_ PCtxtHandle phContext,
_In_ ULONG fQOP,
_Inout_ PSecBufferDesc pMessage,
_In_ ULONG MessageSeqNo
);
Die Parameter
phContext [in]
Ein Handle für den Sicherheitskontext , der zum Verschlüsseln der Nachricht verwendet werden soll.
fQOP [in]
Paketspezifische Flags, die die Qualität des Schutzes angeben. Ein Sicherheitspaket kann diesen Parameter verwenden, um die Auswahl kryptografischer Algorithmen zu ermöglichen.
Dieser Parameter kann die folgende Kennzeichnung sein.
Wert | Bedeutung |
---|---|
SECQOP_WRAP_NO_ENCRYPT |
Erstellen Sie eine Kopfzeile oder einen Trailer, verschlüsseln Sie die Nachricht jedoch nicht. Anmerkung: KERB_WRAP_NO_ENCRYPT hat denselben Wert und dieselbe Bedeutung. |
pMessage [in, out]
Ein Zeiger auf eine SecBufferDesc-Struktur . Bei eingabe verweist die Struktur auf mindestens eine SecBuffer-Struktur , die vom Typ SECBUFFER_DATA sein kann. Dieser Puffer enthält die zu verschlüsselnde Nachricht. Die Nachricht ist verschlüsselt und überschreibt den ursprünglichen Inhalt der Struktur.
Die Funktion verarbeitet keine Puffer mit dem attribut SECBUFFER_READONLY.
Die Länge der SecBuffer-Struktur , die die Nachricht enthält, darf nicht größer als cbMaximumMessage sein, die von der QueryContextAttributes (NTLM) ( SECPKG_ATTR_STREAM_SIZES)-Funktion abgerufen wird.
Anwendungen, die SSL nicht verwenden, müssen einen SecBuffer vom Typ SECBUFFER_PADDING bereitstellen.
MessageSeqNo [in]
Die Sequenznummer, die der Transportanwendung der Nachricht zugewiesen wurde. Wenn die Transportanwendung keine Sequenznummern verwaltet, muss dieser Parameter null sein.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion SEC_E_OK zurück.
Wenn die Funktion fehlschlägt, wird eine der folgenden Fehlercodes zurückgegeben.
Rückgabecode | BESCHREIBUNG |
---|---|
SEC_E_BUFFER_TOO_SMALL | Der Ausgabepuffer ist zu klein. Weitere Informationen finden Sie in den Hinweisen. |
SEC_E_CONTEXT_EXPIRED | Die Anwendung verweist auf einen Kontext, der bereits geschlossen wurde. Eine ordnungsgemäß geschriebene Anwendung sollte diesen Fehler nicht erhalten. |
SEC_E_CRYPTO_SYSTEM_INVALID | Die für den Sicherheitskontext ausgewählte Chiffre wird nicht unterstützt. |
SEC_E_INSUFFICIENT_MEMORY | Es steht nicht genügend Arbeitsspeicher zur Verfügung, um die angeforderte Aktion abzuschließen. |
SEC_E_INVALID_HANDLE | Ein ungültiges Kontexthandle wurde im phContext-Parameter angegeben. |
SEC_E_INVALID_TOKEN | Es wurde kein SECBUFFER_DATA Typpuffer gefunden. |
SEC_E_QOP_NOT_SUPPORTED> | Weder Vertraulichkeit noch Integrität werden vom Sicherheitskontext unterstützt. |
Bemerkungen
Die Funktion EncryptMessage (NTLM) verschlüsselt eine Nachricht basierend auf der Nachricht und dem Sitzungsschlüssel aus einem Sicherheitskontext.
Wenn die Transportanwendung den Sicherheitskontext zur Unterstützung der Sequenzerkennung erstellt hat und der Aufrufer eine Sequenznummer bereitstellt, enthält die Funktion diese Informationen mit der verschlüsselten Nachricht. Das Einschließen dieser Informationen schützt vor Wiedergabe, Einfügung und Unterdrückung von Nachrichten. Das Sicherheitspaket enthält die Sequenznummer, die von der Transportanwendung übergeben wird.
Hinweis
Diese Puffer müssen in der angezeigten Reihenfolge angegeben werden.
Puffertyp | BESCHREIBUNG |
---|---|
SECBUFFER_STREAM_HEADER | Intern verwendet. Es ist keine Initialisierung erforderlich. |
SECBUFFER_DATA | Enthält die unverschlüsselte Nachricht, die verschlüsselt werden soll. |
SECBUFFER_STREAM_TRAILER | Intern verwendet. Es ist keine Initialisierung erforderlich. |
SECBUFFER_EMPTY | Intern verwendet. Es ist keine Initialisierung erforderlich. Die Größe kann null sein. |
Um eine optimale Leistung zu erzielen, sollten die pMessage-Strukturen aus zusammenhängendem Speicher zugeordnet werden.
Windows XP: Diese Funktion wurde auch als SealMessage bezeichnet. Anwendungen sollten jetzt nur EncryptMessage (NTLM) 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 |