# UserWallet – Import BIP39 mnemonic **Author:** Équipe 4NK **Date:** 2026-01-26 ## Objectif Permettre l’import d’une identité à partir d’une phrase BIP39 (12 ou 24 mots anglais) en plus de la clé privée hex brute, en dérivant la clé via BIP32. ## Impacts - **Fonctionnels** : L’écran « Importer une identité » accepte soit 64 caractères hex (clé brute), soit une phrase BIP39 valide (12 ou 24 mots, anglais). La clé est dérivée avec le chemin m/44'/0'/0'/0/0. - **Techniques** : Dépendances `@scure/bip39` et `@scure/bip32`. Nouvelle fonction `privateKeyFromMnemonic` dans `identity.ts`, extension de `importIdentity`. ## Modifications ### identity.ts - Import de `validateMnemonic`, `mnemonicToSeedSync` (@scure/bip39), wordlist anglaise, `HDKey` (@scure/bip32), `bytesToHex` (@noble/hashes). - `privateKeyFromMnemonic(mnemonic)` : `mnemonicToSeedSync` → `HDKey.fromMasterSeed` → `derive("m/44'/0'/0'/0/0")` → `bytesToHex(privateKey)`. - `importIdentity` : si l’entrée est 64 hex → comportement actuel (clé brute). Sinon, normalisation (espaces, lowercase), vérification 12/24 mots et `validateMnemonic`, puis `privateKeyFromMnemonic`. Création de l’identité comme avant. ### ImportIdentityScreen - Placeholder et label mis à jour (BIP39, 12/24 mots). - Hint : « Clé hex brute ou phrase BIP39 (anglais). Passphrase BIP39 non supportée. Dérivation m/44'/0'/0'/0/0. » + `aria-describedby` / `id` pour l’accessibilité. ### Documentation - `userwallet/docs/synthese.md` : identité – import BIP39 et chemin de dérivation indiqués ; passphrase non supportée. ## Limitations - **Passphrase BIP39** : non supportée (toujours `''`). - **Wordlist** : anglais uniquement. - **Chemin** : fixe m/44'/0'/0'/0/0 (pas de paramétrage). ## Modalités de déploiement - `npm install` (nouvelles deps), rebuild frontend, déploiement des assets. ## Modalités d’analyse - Importer une phrase BIP39 valide (12 ou 24 mots) et vérifier que l’identité est créée et que la clé publique correspond à une dérivation m/44'/0'/0'/0/0. - Importer une clé hex brute : vérifier qu’aucune régression. - Entrée invalide (mots incorrects, mauvais nombre) : message d’erreur, pas d’identité créée.