System.Tether.Manager.TTetheringAdapter.CheckToken

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function CheckToken(const AManager, Seed, Token: string): Boolean;

C++

bool __fastcall CheckToken(const System::UnicodeString AManager, const System::UnicodeString Seed, const System::UnicodeString Token);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function protected
System.Tether.Manager.pas
System.Tether.Manager.hpp
System.Tether.Manager TTetheringAdapter


Beschreibung

Gibt True zurück, wenn der angegebene Hash-Code mit einem Hash-Code der Verkettung des Hash-Codes aus der letzten Verbindung mit dem Remote-Manager und dem angegebenen Startwert übereinstimmt. Andernfalls wird False zurückgegeben.

TTetheringNetworkAdapterCommon und TTetheringBluetoothAdapter überprüfen mit CheckToken einen Hash-Code von einem Remote-Manager, der zuvor mit dem Manager Ihres Adapters gekoppelt war.

Nach der erfolgreichen Koppelung des Managers Ihres Adapters mit dem Manager eines Remote-Adapters speichert jeder Manager die ID des jeweils anderen Managers und den Hash-Code, den beide Manager während der Koppelung teilen, im Arbeitsspeicher.

Irgendwann könnten diese Manager die Verbindung zueinander aufheben. Wenn später wieder eine Verbindung hergestellt werden soll und der Manager des Remote-Adapters erneut eine Koppelung mit Ihrem Manager versucht und Ihr Manager passwortgeschützt ist (andernfalls erfolgt die Koppelung automatisch), müssen für die Koppelung die Passwörter der Manager nicht übereinstimmen. Stattdessen überprüfen die Adapter die bei der vorherigen Koppelung generierten Hash-Codes, die von jedem Manager im Arbeitsspeicher gespeichert wurden:

  1. Wenn der Manager Ihres Adapters passwortgeschützt ist (TTetheringManager.Password ist kein leerer String), generiert Ihr Adapter einen zufälligen Basiswert für Verbindungen mit dem Remote-Adapter. Ihr Adapter sendet dann diesen Basiswert an den Remote-Adapter.
  2. Der Remote-Adapter generiert einen Hash-Code der Verkettung des Hash-Codes aus der letzten Verbindung zwischen den Managern (den beide Manager im Arbeitsspeicher gespeichert haben) und dem Basiswert, den Ihr Adapter zuvor gesendet hat. Dann sendet der Remote-Adapter diesen Hash-Code an Ihren Adapter.
  3. Ihr Adapter generiert einen Hash-Code der Verkettung des Hash-Codes aus der letzten Verbindung zwischen den Managern (den beide Manager im Arbeitsspeicher gespeichert haben) und dem Basiswert, den Ihr Adapter zuvor für Verbindungen mit dem Remote-Adapter generiert hat. Dann überprüft Ihr Adapter, ob dieser Hash-Code mit dem Hash-Code übereinstimmt, den der Remote-Adapter sendet.

CheckToken ist für den letzten Schritt dieses Prozesses zuständig. CheckToken generiert einen Hash-Code der Verkettung des Hash-Codes aus der letzten Verbindung mit AManager und Seed und gibt True zurück, wenn dieser Hash-Code mit Token übereinstimmt. Wenn die Hash-Codes nicht übereinstimmen, wird False zurückgegeben.

In Unterklassen von TTetheringAdapter muss ein eigenes System zum Generieren und Verwalten von Basiswerten implementiert und mit CheckToken die Hash-Codes von Remote-Adaptern mit einem Basiswert und dem Hash-Code aus der letzten Verbindung der beiden Manager überprüft werden.

Hash-Codes aus früheren Koppelungen werden standardmäßig im Arbeitsspeicher gespeichert. Wenn Koppelungsdaten dauerhaft sein sollen, damit beim Neustart Ihrer Anwendung die Koppelungsdaten nicht zurückgesetzt werden, müssen Sie eine Unterklasse von TTetheringCustomStorage erstellen und eine Instanz in der Behandlungsroutine für das Ereignis TTetheringManager.OnRequestStorage an Ihren Manager übergeben.

Siehe auch