UserWallet: Finalisation du pairing avec mots uniquement
**Motivations:** - Finaliser l'implémentation du pairing avec mots uniquement - Mettre à jour la documentation du pairing connecté **Root causes:** - N/A (évolution fonctionnelle) **Correctifs:** - N/A **Evolutions:** - Finalisation du pairing avec mots uniquement - Mise à jour de la documentation **Pages affectées:** - features/userwallet-pairing-words-only-finalise.md - userwallet/features/userwallet-pairing-connecte.md
This commit is contained in:
parent
46bf9676a0
commit
6e8f554371
11
features/userwallet-pairing-words-only-finalise.md
Normal file
11
features/userwallet-pairing-words-only-finalise.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Pairing mots seuls — finalisation
|
||||||
|
|
||||||
|
**Objectif :** Finaliser le pairing 8 mots sans échange de clé publique : suppression de `validatePublicKeyHex`, mise à jour de la doc, cohérence avec WordInputGrid et confirmation (plaintext si pas de `remotePublicKey`).
|
||||||
|
|
||||||
|
**Modifications :**
|
||||||
|
- `pairing.ts` : suppression de `validatePublicKeyHex` et des constantes `PUBKEY_HEX_LEN` / `PUBKEY_PREFIX`. Commentaire `addRemotePairFromWords` précisant que `remotePublicKey` est optionnel.
|
||||||
|
- `userwallet-pairing-connecte.md` : flux 1er/2e device décrit en « pair distant (8 mots BIP32-style) » ; « membre finalisé » → « membre finaliser » ; Statut mis à jour (pairing 8 mots uniquement, chiffrement optionnel via `PairConfig.publicKey`, sinon base64) ; Impacts (contrats) alignés sur un seul type « membre finaliser ».
|
||||||
|
|
||||||
|
**Impacts :** Aucun sur le comportement actuel. Les écrans utilisent déjà `WordInputGrid`, `addRemotePairFromWords(parsed, [], undefined)` et la confirmation avec `remote.publicKey` optionnel.
|
||||||
|
|
||||||
|
**Lint :** Le projet userwallet signale `ERR_MODULE_NOT_FOUND` pour `typescript-eslint` dans la config ESLint. `npm run type-check` et les lints IDE sur les fichiers modifiés sont OK.
|
||||||
@ -30,7 +30,7 @@ Les messages sont envoyés essentiellement chiffrés. Il faut avoir reçu des me
|
|||||||
|
|
||||||
## Impacts
|
## Impacts
|
||||||
|
|
||||||
- **Contrats** : format "membre finaliser" / "membre finalisé", validateurs, signatures multiples.
|
- **Contrats** : format "membre finaliser", validateurs, signatures multiples (les deux devices signent le même message).
|
||||||
- **Relais** : publication message + signatures + clés (chiffrement, DH).
|
- **Relais** : publication message + signatures + clés (chiffrement, DH).
|
||||||
- **IndexedDB** : stockage des versions et des contrats signés.
|
- **IndexedDB** : stockage des versions et des contrats signés.
|
||||||
- **Sync** : récupération des messages chiffrés, clés DH, déchiffrement, mise à jour du graphe et détection des confirmations croisées.
|
- **Sync** : récupération des messages chiffrés, clés DH, déchiffrement, mise à jour du graphe et détection des confirmations croisées.
|
||||||
@ -49,4 +49,4 @@ Les messages sont envoyés essentiellement chiffrés. Il faut avoir reçu des me
|
|||||||
## Statut
|
## Statut
|
||||||
|
|
||||||
- **Documentation** : présente.
|
- **Documentation** : présente.
|
||||||
- **Implémentation** : faite (message "membre finaliser", échange de signatures, publication relais, stockage IndexedDB, affichage "Connecté"). Version incrémentée : device 1 re-publie M2 (version "2") après réception de la signature du 2e. Détection au Sync : si device 1 a timeout au poll, un « Synchroniser maintenant » vérifie messages + signatures et enregistre la confirmation. **Chiffrement ECDH** : échange de clés publiques (QR/URL `pubkey`, formulaire « Clé du 2e »), `PairConfig.publicKey`, chiffrement `encryptWithECDH`, POST `MsgCle` (algo `AES-GCM-ECDH`, `df_ecdh_scannable` = clé du signataire), déchiffrement au fetch. Type "membre finalisé" (device 2) : non implémenté, les deux signent le même "membre finaliser". **Export/import** : `pairing_confirm` inclus dans l’export, restauré à l’import ; suppression (« Supprimer ») vide aussi `userwallet_pairing_confirm`.
|
- **Implémentation** : faite (message "membre finaliser", échange de signatures, publication relais, stockage IndexedDB, affichage "Connecté"). Version incrémentée : device 1 re-publie M2 (version "2") après réception de la signature du 2e. Détection au Sync : si device 1 a timeout au poll, un « Synchroniser maintenant » vérifie messages + signatures et enregistre la confirmation. **Pairing** : uniquement par 8 mots (BIP32-style) ; pas d'échange de clé publique dans les formulaires. **Chiffrement** : si `PairConfig.publicKey` est fourni (optionnel), ECDH `encryptWithECDH` / POST `MsgCle` ; sinon message en clair (base64). **Export/import** : `pairing_confirm` inclus dans l’export, restauré à l’import ; suppression (« Supprimer ») vide aussi `userwallet_pairing_confirm`.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user