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
0
SECBUFFER_TOKEN
Leer.
1
SECBUFFER_PKG_PARAMS
Methode.
2
SECBUFFER_PKG_PARAMS
URL.
3
SECBUFFER_PKG_PARAMS
HEntity. Weitere Informationen finden Sie unter Eingabepuffer für die Digest-Anforderungsantwort.
4
SECBUFFER_PADDING
Leer. Empfängt die Signatur.
 

Wenn der Digest-SSP als SASL-Mechanismus verwendet wird, sollten die Puffer wie folgt konfiguriert werden.

Puffertyp #/Puffertyp Bedeutung
0
SECBUFFER_TOKEN
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.
1
SECBUFFER_DATA
Zu signierte Nachricht.
2
SECBUFFER_PADDING
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
SEC_I_RENEGOTIATE
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.
SEC_E_INVALID_HANDLE
Das von phContext angegebene Kontexthandle ist ungültig.
SEC_E_INVALID_TOKEN
pMessage enthielt keinen gültigen SECBUFFER_TOKEN Puffer oder zu wenig Puffer.
SEC_E_OUT_OF_SEQUENCE
Die Nonceanzahl ist nicht sequenziert.
SEC_E_NO_AUTHENTICATING_AUTHORITY
Der Sicherheitskontext (phContext) muss erneut überprüft werden.
STATUS_INVALID_PARAMETER
Die Nonceanzahl ist nicht numerisch.
SEC_E_QOP_NOT_SUPPORTED
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

Weitere Informationen

SSPI-Funktionen

SecBuffer

SecBufferDesc

VerifySignature