MakeSignature-Funktion (sspi.h)
Die MakeSignature-Funktion generiert eine kryptografische Prüfsumme der Nachricht und enthält auch Sequenzierungsinformationen, um den Verlust oder das Einfügen von Nachrichten zu verhindern. MakeSignature ermöglicht es der Anwendung, zwischen mehreren kryptografischen Algorithmen zu wählen, wenn sie vom gewählten Mechanismus unterstützt wird. Die MakeSignature-Funktion verwendet den Sicherheitskontext , auf den das Kontexthandle verweist.
Diese Funktion wird vom Schannel Security Support Provider (SSP) nicht unterstützt.
Syntax
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
[in] PCtxtHandle phContext,
[in] unsigned long fQOP,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo
);
Parameter
[in] phContext
Ein Handle für den Sicherheitskontext, der zum Signieren der Nachricht verwendet werden soll.
[in] fQOP
Paketspezifische Flags, die die Qualität des Schutzes angeben. Ein Sicherheitspaket kann diesen Parameter verwenden, um die Auswahl kryptografischer Algorithmen zu aktivieren.
Bei Verwendung des Digest-SSP muss dieser Parameter auf 0 festgelegt werden.
[in, out] pMessage
Ein Zeiger auf eine SecBufferDesc-Struktur . Bei der Eingabe verweist die -Struktur auf eine oder mehrere SecBuffer-Strukturen , die die zu signierte Nachricht enthalten. Die Funktion verarbeitet keine Puffer mit dem attribut SECBUFFER_READONLY_WITH_CHECKSUM.
Die SecBufferDesc-Struktur verweist auch auf eine SecBuffer-Struktur vom Typ SECBUFFER_TOKEN, die die Signatur empfängt.
Wenn der Digest-SSP als HTTP-Authentifizierungsprotokoll verwendet wird, sollten die Puffer wie folgt konfiguriert werden.
Puffertyp #/Puffertyp | Bedeutung |
---|---|
|
Leer. |
|
Methode. |
|
URL. |
|
HEntity. Weitere Informationen finden Sie unter Eingabepuffer für die Digest-Anforderungsantwort. |
|
Leer. Empfängt die Signatur. |
Wenn der Digest-SSP als SASL-Mechanismus verwendet wird, sollten die Puffer wie folgt konfiguriert werden.
Puffertyp #/Puffertyp | Bedeutung |
---|---|
|
Leer. Empfängt die Signatur. Dieser Puffer muss groß genug sein, um die größtmögliche Signatur zu enthalten. Bestimmen Sie die erforderliche Größe, indem Sie die Funktion QueryContextAttributes (General) aufrufen und SECPKG_ATTR_SIZES angeben. Überprüfen Sie den zurückgegebenen SecPkgContext_Sizes Strukturmember cbMaxSignature. |
|
Zu signierte Nachricht. |
|
Leer. |
[in] MessageSeqNo
Die Sequenznummer, die die Transportanwendung der Nachricht zugewiesen hat. Wenn die Transportanwendung keine Sequenznummern verwaltet, ist dieser Parameter null.
Bei Verwendung des Digest-SSP muss dieser Parameter auf 0 festgelegt werden. Der Digest-SSP verwaltet die Sequenznummerierung intern.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion SEC_E_OK zurück.
Wenn die Funktion fehlschlägt, gibt sie einen der folgenden Fehlercodes zurück.
Rückgabecode | Beschreibung |
---|---|
|
Die Remotepartei benötigt eine neue Handshakesequenz, oder die Anwendung hat gerade ein Herunterfahren initiiert. Kehren Sie zur Aushandlungsschleife zurück, und rufen Sie AcceptSecurityContext (Allgemein) oder InitializeSecurityContext (Allgemein) erneut auf . Beim ersten Aufruf wird ein leerer Eingabepuffer übergeben. |
|
Das von phContext angegebene Kontexthandle ist ungültig. |
|
pMessage enthielt keinen gültigen SECBUFFER_TOKEN Puffer oder zu wenig Puffer. |
|
Die Nonceanzahl ist nicht sequenziert. |
|
Der Sicherheitskontext (phContext) muss erneut überprüft werden. |
|
Die Nonceanzahl ist nicht numerisch. |
|
Die zwischen Client und Server ausgehandelte Qualität des Schutzes umfasste keine Integritätsprüfung . |
Hinweise
Die MakeSignature-Funktion generiert eine Signatur, die auf der Nachricht und dem Sitzungsschlüssel für den Kontext basiert.
Die VerifySignature-Funktion überprüft die Meldungen, die von der MakeSignature-Funktion signiert sind.
Wenn die Transportanwendung den Sicherheitskontext zur Unterstützung der Sequenzerkennung erstellt hat und der Aufrufer eine Sequenznummer bereitstellt, schließt die Funktion diese Informationen in die Signatur ein. Dies schützt vor Antworten, Einfügen und Unterdrücken von Nachrichten. Das Sicherheitspaket enthält die Sequenznummer, die von der Transportanwendung übergeben wird.
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 |