EncryptMessage-Funktion (NTLM)
Die Funktion EncryptMessage (NTLM) verschlüsselt eine Nachricht, um Datenschutz zu gewährleisten. Mit EncryptMessage (NTLM) kann eine Anwendung zwischen kryptografischen Algorithmen wählen, die vom ausgewählten Mechanismus unterstützt werden. Die EncryptMessage-Funktion (NTLM) verwendet den Sicherheitskontext, auf den das Kontexthandl verweist. Einige Pakete verfügen nicht über Nachrichten, die verschlüsselt oder entschlüsselt werden sollen, sondern bieten einen Integritätshash, der überprüft werden kann.
Hinweis
EncryptMessage (NTLM) und DecryptMessage (NTLM) 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 EncryptMessage(
_In_ PCtxtHandle phContext,
_In_ ULONG fQOP,
_Inout_ PSecBufferDesc pMessage,
_In_ ULONG MessageSeqNo
);
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 aktivieren.
Dieser Parameter kann das folgende Flag sein.
| Wert | Bedeutung |
|---|---|
|
Erstellen Sie einen Header oder Nachspann, verschlüsseln Sie die Nachricht jedoch nicht.[!Note] |
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. Dieser Puffer enthält die zu verschlüsselnde Nachricht. Die Nachricht wird an Ort und Stelle verschlüsselt und überschreiben den ursprünglichen Inhalt der -Struktur.
Die Funktion verarbeiten keine Puffer mit dem SECBUFFER _ READONLY-Attribut.
Die Länge der SecBuffer-Struktur, die die Nachricht enthält, darf nicht größer als cbMaximumMessage sein, die von der NTLM-Funktion (QueryContextAttributes) (SECPKG _ ATTR _ STREAM _ SIZES) abgerufen wird.
Anwendungen, die kein SSL verwenden, müssen einen SecBuffer vom Typ SECBUFFER _ PADDING zur Verfügung stellen.
MessageSeqNo [ In]
Die Sequenznummer, die die Transportanwendung der Nachricht zugewiesen hat. Wenn die Transportanwendung keine Sequenznummern verwaltet, muss dieser Parameter 0 (null) sein.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion SEC _ E _ OK zurück.
Wenn die Funktion fehlschlägt, wird einer 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 bezieht sich 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 Verschlüsselung wird nicht unterstützt. |
| _S.E _ NICHT GENÜGEND _ ARBEITSSPEICHER | Es ist nicht genügend Arbeitsspeicher verfügbar, um die angeforderte Aktion abschließen zu können. |
| SEC _ E _ UNGÜLTIGES _ HANDLE | Im phContext-Parameter wurde ein ungültiges Kontexthand handle angegeben. |
| SEC _ E _ UNGÜLTIGES _ TOKEN | Es wurde kein _ SECBUFFER-DATENTYPpuffer gefunden. |
| SEC _ E _ QOP _ NOT _ SUPPORTED> | Weder Vertraulichkeit noch Integrität werden vom Sicherheitskontext unterstützt. |
Hinweise
Die EncryptMessage-Funktion (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 enthält, schließt die Funktion diese Informationen in die verschlüsselte Nachricht ein. Das Einfügen dieser Informationen schützt vor Wiedergabe, Einfügung und Unterdrückung von Nachrichten. Das Sicherheitspaket enthält die Sequenznummer, die von der Transportanwendung übergeben wurde.
Hinweis
Diese Puffer müssen in der angezeigten Reihenfolge angegeben werden.
| Puffertyp | Beschreibung |
|---|---|
| _SECBUFFER-STREAMHEADER _ | Wird intern verwendet. Es ist keine Initialisierung erforderlich. |
| _SECBUFFER-DATEN | Enthält die zu verschlüsselnde Klartextnachricht. |
| SECBUFFER _ STREAM _ TRAILER | Wird intern verwendet. Es ist keine Initialisierung erforderlich. |
| SECBUFFER _ EMPTY | Wird intern verwendet. Es ist keine Initialisierung erforderlich. Die Größe kann 0 (null) sein. |
Um eine optimale Leistung zu erzielen, sollten die pMessage-Strukturen aus dem zusammenhängenden Speicher zugeordnet werden.
Windows XP: Diese Funktion wurde auch als SealMessage bezeichnet. Anwendungen sollten jetzt nur noch EncryptMessage (NTLM) verwenden.
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 |