diff --git a/components/CreateAccountModalComponents.tsx b/components/CreateAccountModalComponents.tsx index 2ef7919..c87575f 100644 --- a/components/CreateAccountModalComponents.tsx +++ b/components/CreateAccountModalComponents.tsx @@ -4,9 +4,12 @@ export function RecoveryWarning() {
⚠️ Important
- Ces 4 mots-clés sont votre seule façon de récupérer votre compte. + Ces 4 mots-clés sont votre seule façon de récupérer votre compte. Ils ne seront jamais affichés à nouveau.
++ Ces mots-clés (dictionnaire BIP39) sont utilisés avec PBKDF2 pour chiffrer une clé de chiffrement (KEK) stockée dans l'API Credentials du navigateur. Cette KEK chiffre ensuite votre clé privée stockée dans IndexedDB (système à deux niveaux). +
Notez-les dans un endroit sûr. Sans ces mots-clés, vous perdrez définitivement l'accès à votre compte.
@@ -80,6 +83,10 @@ export function ImportKeyForm({ className="w-full px-3 py-2 border border-gray-300 rounded-lg font-mono text-sm" rows={4} /> ++ Après l'import, vous recevrez 4 mots-clés de récupération (dictionnaire BIP39) pour sécuriser votre compte. + Ces mots-clés chiffrent une clé de chiffrement (KEK) stockée dans l'API Credentials, qui chiffre ensuite votre clé privée. +
{error}
} > diff --git a/components/CreateAccountModalSteps.tsx b/components/CreateAccountModalSteps.tsx index 7f5606f..7fd08e5 100644 --- a/components/CreateAccountModalSteps.tsx +++ b/components/CreateAccountModalSteps.tsx @@ -23,7 +23,7 @@ export function RecoveryStep({ return (- Entrez vos 4 mots-clés de récupération pour déverrouiller votre compte. + Entrez vos 4 mots-clés de récupération (dictionnaire BIP39) pour déverrouiller votre compte. + Ces mots déchiffrent la clé de chiffrement (KEK) stockée dans l'API Credentials, qui déchiffre ensuite votre clé privée.
{error}
} diff --git a/hooks/useI18n.ts b/hooks/useI18n.ts index 7073332..9f7cb4a 100644 --- a/hooks/useI18n.ts +++ b/hooks/useI18n.ts @@ -8,8 +8,14 @@ export function useI18n(locale: Locale = 'fr') { useEffect(() => { const load = async () => { try { - // Get saved locale from localStorage or use provided locale - const savedLocale = typeof window !== 'undefined' ? (localStorage.getItem('zapwall-locale') as Locale | null) : null + // Get saved locale from IndexedDB or use provided locale + let savedLocale: Locale | null = null + try { + const { storageService } = await import('@/lib/storage/indexedDB') + savedLocale = await storageService.get