Skip to content

feat(api) : WP-D.2, le chemin par BLE dans l'API, et pair_ble sur TLS - #255

Merged
Medboy224 merged 1 commit into
mainfrom
feat/ble-api
Nov 2, 2026
Merged

Medboy224 merged 1 commit into
mainfrom
feat/ble-api

Conversation

@Medboy224

Copy link
Copy Markdown
Owner

Lot WP-D.2 du plan J6d, seconde partie : le protocole par BLE (#253) relié à l'API, et pair_ble sur TLS. Avec cette PR, le cœur sait tout faire. Il ne reste aux plateformes (WP-D.3) qu'à porter les octets par la radio.

Les actions

Une étape par appel, sur une connexion GATT que la plateforme nomme (conn), 4 au plus de chaque côté (BLE-11) :

  • ble_server : un autre appareil a touché celui-ci.
    • message : ce que le client a écrit ; la réponse donne les octets à renvoyer, ou la demande authentifiée (qui, ce qu'il peut faire, qui crée le réseau), ou le réseau que le client a créé.
    • answer : le réseau que cet appareil a créé, ou qui le crée.
    • close : la connexion est partie.
  • ble_client : l'utilisateur de cet appareil en a touché un autre.
    • Reconnaissance : hello, recognize.
    • Appareil de confiance : trusted.
    • Appareil inconnu : pin_wanted, pin_ready, pin, pin_reply.
    • Puis reply, network et ack quand cet appareil crée le réseau, et close.
  • pair_ble : l'appareil qui a rejoint le réseau se connecte à celui qui l'a créé, en épinglant la clé que BLE a authentifiée. Le créateur ne l'accepte qu'une fois, dans les 2 minutes (BLE-10). Sans BLE avant, pair_failed, sans détail.

Ce qui se raccorde à l'existant

  • La demande de PIN passe par le PIN à la demande : le même PIN et le même compteur que sur TLS, pin_requested avec le nom générique du demandeur, et pin_refuse qui arrête aussi la demande par BLE.
  • Le mot de passe du réseau est masqué dans le journal, comme le PIN.
  • Les bandes que l'appareil peut créer et rejoindre sont lues à chaque demande : un téléphone au Wi-Fi coupé ne peut pas créer son groupe à 5 GHz. Own devient une fonction dans pkg/pairing.
  • Le suffixe est en minuscules, comme le nom générique (medXfer-6e2a) : la liste pourra réunir un appareil vu par BLE et le même vu sur le réseau. L'essai l'a montré.

Schéma v4 : ble_server, ble_client et pair_ble ajoutés, sans rupture (fichier de référence mis à jour).

Tests

pkg/api/ble_test.go, entre deux daemons, la radio laissée de côté :

  • le chemin du PIN de bout en bout : la demande de PIN, le réseau chiffré, pair_ble, puis la session ouverte des deux côtés. Rien n'est écrit (PAIR-08), et ni le mot de passe du réseau ni le PIN n'apparaissent dans le journal, même écrits par une ligne maladroite ;
  • pair_ble sans BLE : refusé des deux côtés ;
  • « Refuser » : le message suivant de la demande est refusé ;
  • reconnaissance d'un inconnu : seulement le suffixe, qui est celui du nom générique.

go test ./... passe.

Bible : BLE-01, BLE-08 et BLE-10 à jour. Dossier G4 : les tests de l'API. Plan J6d : WP-D.2 fait.

🤖 Generated with Claude Code

Deux actions portent le protocole de pkg/pairing/ble.go, une étape par
appel : ble_server (l'appareil touché répond) et ble_client (celui qui
touche demande), sur une connexion GATT que la plateforme nomme, 4 au plus
de chaque côté. pair_ble ouvre ensuite la session sur le réseau, la clé
que BLE a authentifiée épinglée et acceptée une fois (BLE-10).

La demande de PIN par BLE passe par le PIN à la demande, le même que sur
TLS (pin_requested avec le nom générique du demandeur, pin_refuse) ; le mot
de passe du réseau est masqué dans le journal. Les bandes de l'appareil
sont lues à chaque demande ; le suffixe est en minuscules, comme le nom
générique.

Schéma v4 : ble_server, ble_client et pair_ble ajoutés, sans rupture.
Tests : le chemin du PIN entre deux daemons jusqu'à la session, pair_ble
sans BLE refusé, « Refuser », reconnaissance d'un inconnu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Medboy224
Medboy224 merged commit ed56333 into main Nov 2, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant