Streamkontexte
Streamkontexte verarbeiten die sicheren streamorientierten Protokolle wie SSL oder PCT. Im Interesse der gemeinsamen Nutzung derselben Schnittstelle und einer ähnlichen Verwaltung von Anmeldeinformationen bietet SSPI Unterstützung für Streamkontexte. Das Sicherheitsprotokoll umfasst sowohl das Streamauthentifizierungsschema als auch die Datensatzformate.
Sicherheitspakete, die Streamkontexte unterstützen, verfügen über die folgenden Prozessmerkmale, um streamorientierte Protokolle bereitstellen zu können:
Das Paket legt das FLAG SECPKG _ FLAG _ STREAM fest, um anzugeben, dass es Streamsemantik unterstützt.
Transportanwendungen fordern Streamsemantik an, indem sie die ISC _ REQ STREAM- und ASC REQ STREAM-Flags in den Aufrufen der _ Funktionen _ _ InitializeSecurityContext (General) und AcceptSecurityContext (General) festlegen.
Die Anwendung ruft die QueryContextAttributes (General)-Funktion mit einer SecPkgContext _ StreamSizes-Struktur auf, um den Sicherheitskontext nach der Anzahl der bereitgestellten Puffer und den Für Headern oder Nachspannen zu reservierenden Größen zu abfragen.
Die Anwendung bietet Pufferdeskriptoren, die bei der eigentlichen Verarbeitung der Daten verschont werden müssen. Durch Angabe der Streamsemantik gibt der Aufrufer die Bereitschaft an, zusätzliche Verarbeitungen zu übernehmen, damit das Sicherheitspaket die Blockierung der Nachrichten verarbeiten kann. Im Wesentlichen übergibt der Aufrufer für die Funktionen MakeSignature und VerifySignature eine Liste von Puffern. Wenn eine Nachricht von einem streamorientierten Kanal (z. B. einem TCP-Port) empfangen wird, übergibt der Aufrufer wie folgt eine Pufferliste.
Buffer Länge Puffertyp 1 Nachrichtenlänge _SECBUFFER-DATEN 2 0 SECBUFFER _ EMPTY 3 0 SECBUFFER _ EMPTY 4 0 SECBUFFER _ EMPTY 5 0 SECBUFFER _ EMPTY Das Sicherheitspaket funktioniert dann im BLOB. Wenn die Funktion erfolgreich zurückgegeben wird, sieht die Pufferliste wie folgt aus.
Buffer Länge Puffertyp 1 Headerlänge _SECBUFFER-STREAMHEADER _ 2 Datenlänge _SECBUFFER-DATEN 3 Länge des Nachspanns SECBUFFER _ STREAM _ TRAILER 4 0 SECBUFFER _ EMPTY 5 0 SECBUFFER _ EMPTY Das Paket hätte auch den Puffer 4 mit der Länge x und dem Puffertyp SECBUFFER EXTRA zurückgegeben, der angibt, dass die Daten in diesem Puffer Teil des nächsten Datensatzes sind und noch # _ nicht verarbeitet wurden. Wenn die Nachrichtenfunktion umgekehrt den Fehlercode SEC E INCOMPLETE MESSAGE zurückgibt, sieht die zurückgegebene Pufferliste _ _ wie folgt _ aus.
Buffer Länge Puffertyp 1 x SECBUFFER _ FEHLT Dies gibt an, dass mehr Daten erforderlich waren, um den Datensatz zu verarbeiten. Im Gegensatz zu den meisten Fehlern, die von einer Nachrichtenfunktion zurückgegeben werden, gibt dieser Puffertyp nicht an, dass der Kontext kompromittiert wurde. Stattdessen gibt sie an, dass mehr Daten benötigt werden. -Sicherheitspakete dürfen ihren Zustand in dieser Bedingung nicht aktualisieren.
Auf ähnliche Weise kann der Aufrufer auf absenderseitiger Seite der Kommunikation die MakeSignature-Funktion aufrufen. Das Sicherheitspaket muss möglicherweise den Puffer neu zuspeichern oder Dinge kopieren. Der Aufrufer kann effizienter sein, indem er eine Pufferliste wie folgt an die Hand gibt.
Buffer Länge type 1 Headerlänge _SECBUFFER-STREAMHEADER _ 2 Datenlänge _SECBUFFER-DATEN 3 Länge des Nachspanns SECBUFFER _ STREAM _ TRAILER Dadurch kann der Aufrufer die Puffer effizienter verwenden. Durch Aufrufen der QueryContextAttributes-Funktion, um den zu reservierenden Speicherplatz vor dem Aufruf von MakeSignaturezu bestimmen, ist der Vorgang für die Anwendung und das Sicherheitspaket effizienter.