**Motivations:** - Implement BIP39 mnemonic import for identity creation - Add password-based key protection for enhanced security - Improve pairing workflow with QR code and URL display - Migrate hash cache from LocalStorage to IndexedDB for better scalability - Update signet-dashboard and mempool components **Root causes:** - N/A (feature implementations) **Correctifs:** - N/A (no bug fixes in this commit) **Evolutions:** - BIP39 mnemonic import: Support for 12/24 word English mnemonics with BIP32 derivation path m/44'/0'/0'/0/0 - Key protection: Password-based encryption of private keys at rest with unlock/lock functionality - Pairing workflow: QR code and URL display for device pairing, form-based word exchange between devices - IndexedDB migration: Hash cache moved from LocalStorage to IndexedDB to avoid size limitations - Global action bar: URL parameter support for navigation - Pairing connection: Enhanced pairing status management **Pages affectées:** - userwallet/src/utils/identity.ts - userwallet/src/utils/keyProtection.ts - userwallet/src/utils/sessionUnlockedKey.ts - userwallet/src/utils/indexedDbStorage.ts - userwallet/src/utils/cache.ts - userwallet/src/utils/pairing.ts - userwallet/src/components/UnlockScreen.tsx - userwallet/src/components/PairingDisplayScreen.tsx - userwallet/src/components/PairingSetupBlock.tsx - userwallet/src/components/GlobalActionBar.tsx - userwallet/src/components/HomeScreen.tsx - userwallet/src/components/ImportIdentityScreen.tsx - userwallet/src/components/DataExportImportScreen.tsx - userwallet/src/hooks/useIdentity.ts - userwallet/src/hooks/usePairingConnected.ts - userwallet/src/services/syncService.ts - userwallet/src/services/pairingConfirm.ts - userwallet/src/App.tsx - userwallet/package.json - userwallet/docs/specs.md - userwallet/docs/storage.md - userwallet/docs/synthese.md - signet-dashboard/public/*.html - signet-dashboard/public/app.js - signet-dashboard/public/styles.css - mempool (submodule updates) - hash_list.txt, hash_list_cache.txt, utxo_list.txt, utxo_list_cache.txt, fees_list.txt - features/*.md (documentation files)
3.0 KiB
3.0 KiB
UserWallet – QR et URL pairing quand statut non satisfait
Author: Équipe 4NK
Date: 2026-01-26
Objectif
Lorsque le statut pairing est Satisfait : Non, afficher un bloc « Configurer le pairing avec un 2ᵉ appareil » avec :
- mots du 1ᵉʳ appareil (représentation de la clé publique, 8 mots, format type BIP32), QR et URL ;
- formulaire de saisie des mots du 2ᵉ appareil sur le 1ᵉʳ.
Sur le 2ᵉ appareil (scan du QR ou ouverture de l’URL) : page de saisie des mots du 1ᵉʳ appareil (pré-remplie si ?words= présent).
Impacts
- Fonctionnels : Bloc pairing avec formulaire « Mots du 2ᵉ appareil » sur le 1ᵉʳ ; page
/pairing-display(avec ou sans?words=) = formulaire « Saisir les mots du 1ᵉʳ appareil », pré-rempli depuis l’URL si valide. Soumission →addRemotePairFromWords, puis succès + liens. - Techniques :
parseAndValidatePairingWordset bypass/pairing-displaypour tout path (pas seulement si?words=).
Modifications
pairing.ts
generatePairingWords(): inchangé.parseAndValidatePairingWords(text): parse (whitespace), valide 8 mots +bip32WordsToUuid, retournestring[] | null.
Composants
- PairingSetupBlock : mots du 1ᵉʳ + QR + URL. Section « Mots du 2ᵉ appareil » : formulaire (textarea, « Associer le pair »). Soumission →
parseAndValidatePairingWords→addRemotePairFromWords→navigate('/manage-pairs'). Erreurs en state, pasalert. - PairingDisplayScreen : formulaire « Saisir les mots du 1ᵉʳ appareil ». Pré-rempli depuis
?words=si valide. Soumission →addRemotePairFromWords→ message succès + liens Accueil / Gérer les pairs.
App.tsx
usePairingDisplayBypass():pathname === /pairing-display(avec ou sans?words=).
HomeScreen
- Si
!pairingSatisfied: afficherPairingSetupBlock(et masquer identité / pairing / relais).
package.json (userwallet)
qrcode,@types/qrcode.
Flux utilisateur
- Appareil 1 : Accueil, pairing non satisfait → bloc avec mots du 1ᵉʳ, QR, URL, et saisie des mots du 2ᵉ.
- Appareil 2 : Scanner le QR (ou ouvrir l’URL) → page saisie des mots du 1ᵉʳ (pré-remplie si
?words=). Soumettre → pair ajouté. - Appareil 1 : Saisir les mots du 2ᵉ, « Associer le pair » → redirection vers « Gérer les pairs ».
Modalités de déploiement
npm installdans userwallet (nouvelles deps), rebuild, déploiement des assets.
Modalités d’analyse
- Accueil avec pairing non satisfait : bloc avec mots du 1ᵉʳ, QR, URL, formulaire « Mots du 2ᵉ appareil ».
- Ouvrir l’URL (ou
/pairing-display) sur un 2ᵉ appareil : formulaire « Saisir les mots du 1ᵉʳ » ; si?words=valide, pré-rempli. - Soumission des formulaires : validation 8 mots,
addRemotePairFromWords, messages d’erreur ou succès. - Accessibilité (ARIA, contraste, clavier) des formulaires et des liens.