System.Tether.Manager.TTetheringAdapter.CheckToken

De RAD Studio API Documentation
Aller à : navigation, rechercher

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);

Propriétés

Type Visibilité  Source Unité  Parent
function protected
System.Tether.Manager.pas
System.Tether.Manager.hpp
System.Tether.Manager TTetheringAdapter


Description

Renvoie True si le hachage spécifié correspond au hachage de la concaténation du hachage de la dernière connexion au gestionnaire distant et à la valeur de départ spécifiée. Sinon, False est renvoyé.

TTetheringNetworkAdapterCommon et TTetheringBluetoothAdapter utilisent CheckToken pour valider un hachage à partir d'un gestionnaire distant ayant été préalablement appairé au gestionnaire de votre adaptateur.

Dès que le gestionnaire de votre adaptateur et le gestionnaire d'un adaptateur distant sont appairés avec succès, chaque gestionnaire stocke en mémoire l'ID de l'autre gestionnaire et le hachage que les deux gestionnaires ont partagé pendant l'appairage.

A un certain stade, ces gestionnaires peuvent être déconnectés l'un de l'autre. Si, par la suite, ils se reconnectent et que le gestionnaire de l'adaptateur distant essaie de s'appairer de nouveau avec votre gestionnaire, et tant que votre gestionnaire est protégé par mot de passe (sinon l'appairage survient automatiquement), l'opération d'appairage ne requiert pas que les mots de passe de chaque gestionnaire correspondent. A la place, les adaptateurs vérifient les hachages générés pendant l'opération précédente d'appairage qui ont été stockés par chaque gestionnaire en mémoire :

  1. Si le gestionnaire de votre adaptateur est protégé par mot de passe (TTetheringManager.Password n'est pas une chaîne vide), votre adaptateur génère une valeur de départ aléatoire pour les connexions à l'adaptateur distant. Votre adaptateur envoie ensuite cette valeur à l'adaptateur distant.
  2. L'adaptateur distant génère un hachage de la concaténation du hachage de la dernière connexion entre les gestionnaires (que les deux gestionnaires ont enregistré en mémoire) et de la valeur aléatoire que votre gestionnaire a envoyée préalablement. L'adaptateur distant envoie ensuite ce hachage à votre adaptateur.
  3. Votre adaptateur génère un hachage de la concaténation du hachage de la dernière connexion entre les gestionnaires (que les deux gestionnaires ont enregistré en mémoire) et de la valeur de départ que votre adaptateur a générée précédemment pour les connexions à l'adaptateur distant. Votre adaptateur vérifie ensuite si ce hachage correspond au hachage que l'adaptateur distant envoie.

CheckToken est responsable de la dernière étape du processus. CheckToken génère un hachage de la concaténation du hachage de la dernière connexion à AManager et Seed, et renvoie True si ce hachage correspond à Token. Elle renvoie False si les hachages ne correspondent pas.

Les sous-classes de TTetheringAdapter doivent implémenter leur propre système pour la génération et la gestion des valeurs de départ. Elles doivent aussi utiliser CheckToken pour valider les hachages des adaptateurs distants sur une valeur de départ et le hachage de la dernière connexion entre les deux gestionnaires.

Les hachages des appairages précédents sont stockés en mémoire par défaut. Si vous voulez appairer des données de façon persistante, de telle sorte que le redémarrage de votre application ne réinitialise pas l'appairage des données, vous devez créer une sous-classe de TTetheringCustomStorage et transmettre une instance à votre gestionnaire sur votre handler pour l'événement TTetheringManager.OnRequestStorage.

Voir aussi