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.
Informationen müssen zwischen Client und Server gesendet werden, während ein Sicherheitskontext eingerichtet wird, und danach, da sichere Nachrichten mithilfe der von Schannel bereitgestellten Verschlüsselungs- und Entschlüsselungsfunktionen ausgetauscht werden. Die folgenden Funktionen werden verwendet, um diese Aufgaben auszuführen:
Schannel verfügt über einen gut definierten Satz von Verhaltensweisen für unvollständige oder übermäßige Informationen, die in den Eingabepuffern für diese Funktionen enthalten sind. Informationen werden auf folgende Weise zwischen dem Client und dem Server ausgetauscht:
- Die lokale Partei interagiert mit Schannel, indem sie eine SSPI-Funktion aufruft und Informationen übergibt. In der Regel wurden die Informationen von der Remotepartei empfangen.
- Die Funktion gibt einen Statuscode und Ausgabepuffer zurück, die Informationen enthalten.
- Je nach Statuscode werden die Ausgabepuffer über einen bestimmten Kommunikationsmechanismus an die Remotepartei gesendet.
- Die Remoteparty liest Informationen, die von der lokalen Partei gesendet werden.
- Die Schleife wird wiederholt, wobei die lokalen und Remoteparteien ausgetauscht wurden. (Die Remotepartei ruft eine SSPI-Funktion auf und übergibt die im vorherigen Schritt gelesenen Informationen.)
Alles funktioniert wie erwartet, wenn der Eingabepuffer für die SSPI-Funktion genau die benötigten Informationen enthält. Aufgrund der streamorientierten Natur einiger Kommunikationsprotokolle kann dies jedoch nicht der Fall sein; Ein Block von Informationen, die von einer Remotepartei empfangen werden, kann weniger Daten enthalten als erforderlich oder mehr Daten, als von Schannel in einem einzigen Funktionsaufruf verarbeitet werden können.
Wenn der Eingabepuffer zu wenig Informationen enthält, geben die Funktionen SEC_E_INCOMPLETE_MESSAGE zurück. Der Aufrufer muss zusätzliche Daten von der Remotepartei abrufen und die Funktion erneut aufrufen.
Wenn die Eingabepuffer zu viele Informationen enthalten, behandelt Schannel dies nicht als Fehler. Die Funktion verarbeitet so viel von der Eingabe wie möglich und gibt den Statuscode für diese Verarbeitungsaktivität zurück. Darüber hinaus gibt Schannel das Vorhandensein von unverarbeiteten Informationen in den Eingabepuffern an, indem ein Ausgabepuffer vom Typ SECBUFFER_EXTRA zurückgegeben wird. Das Testen der Ausgabepuffer für diesen Puffertyp ist die einzige Möglichkeit, diese Situation zu erkennen. Das cbBuffer- Feld der zusätzlichen Pufferstruktur gibt an, wie viele Bytes von Eingaben nicht verarbeitet wurden.
Anmerkung
Das pvBuffer- Feld des zusätzlichen Puffers enthält keine Kopie der überschüssigen Daten.
Wenn Sie einen zusätzlichen Puffer aus einer SSPI-Funktion erhalten, müssen Sie die bereits verarbeiteten Informationen aus dem Eingabepuffer entfernen und die Funktion erneut aufrufen. Schannel kann und gibt häufig nur den zusätzlichen Puffer und nichts anderes in den Ausgabepuffern zurück.