**Motivations:** - Provide a dedicated interface for managing Nostr keys - Allow users to view public keys (npub and hex) - Enable importing private keys via URL or text format - Respect the existing two-level encryption system **Root causes:** - No dedicated interface for key management - Users need to view their public keys easily - Users need to import keys in various formats (nsec URL, nsec text, hex) **Correctifs:** - None (new feature) **Evolutions:** - Created KeyManagementManager component for key management - Added public key display (npub and hex formats) - Implemented private key import with support for: - nostr:// URLs with nsec - nsec text format (nsec1...) - hex format (64 characters) - Automatic key extraction from URLs - Account replacement warning and confirmation - Recovery phrase display after import - Individual copy buttons for each key format - Integration in settings page **Pages affectées:** - components/KeyManagementManager.tsx (new) - pages/settings.tsx (modified) - features/key-management-configuration.md (new)
4.3 KiB
4.3 KiB
Key Management Configuration Page
Auteur : Équipe 4NK
Objectif
Créer une page de configuration permettant de :
- Consulter les clés publiques (npub et hex)
- Importer une clé privée sous forme d'URL (nostr://nsec1...) ou de texte (nsec1... ou hex)
- Respecter le système de stockage et de sécurisation à deux niveaux existant
Impacts
Utilisateurs
- Interface dédiée pour gérer les clés Nostr
- Consultation facile des clés publiques
- Import de clés via URL ou texte
- Affichage des mots de récupération après import
Technique
- Nouveau composant
KeyManagementManagerdanscomponents/ - Intégration dans la page
/settings - Utilisation des services existants (
nostrAuthService,keyManagementService) - Respect du système de chiffrement à deux niveaux (KEK + phrase de récupération)
Modifications
Fichiers créés
components/KeyManagementManager.tsx: Composant de gestion des clés- Affichage des clés publiques (npub et hex)
- Formulaire d'import de clé privée
- Support des formats : nsec URL (nostr://nsec1...), nsec texte (nsec1...), hex (64 caractères)
- Extraction automatique de la clé depuis une URL
- Avertissement et confirmation avant remplacement d'un compte existant
- Affichage des mots de récupération après import
Fichiers modifiés
pages/settings.tsx: Ajout du composantKeyManagementManagerdans la page settings
Fonctionnalités
Consultation des clés publiques
- Affichage du npub (format NIP-19)
- Affichage de la clé publique hexadécimale
- Boutons de copie pour chaque format
Import de clé privée
- Support de plusieurs formats :
- URL nostr:// avec nsec :
nostr://nsec1... - Texte nsec :
nsec1... - Clé hexadécimale :
64 caractères hex
- URL nostr:// avec nsec :
- Extraction automatique de la clé depuis une URL
- Validation du format avant import
- Gestion du remplacement d'un compte existant :
- Avertissement si un compte existe déjà
- Confirmation avant remplacement
- Suppression de l'ancien compte avant création du nouveau
Sécurité
- Respect du système de chiffrement à deux niveaux :
- KEK (Key Encryption Key) chiffré avec la phrase de récupération
- Clé privée chiffrée avec le KEK
- KEK stocké dans Credentials API
- Clé privée chiffrée stockée dans IndexedDB
- Affichage unique des mots de récupération après import
- Avertissements clairs sur l'importance de sauvegarder la phrase de récupération
Modalités de déploiement
-
Vérifier que le composant compile sans erreur :
npm run type-check npm run lint -
Tester l'interface :
- Accéder à
/settings - Vérifier l'affichage des clés publiques si un compte existe
- Tester l'import d'une clé privée (nsec ou hex)
- Vérifier l'affichage des mots de récupération
- Tester le remplacement d'un compte existant
- Accéder à
-
Déployer avec le script de déploiement standard
Modalités d'analyse
Logs à surveiller
- Erreurs lors du chargement des clés publiques
- Erreurs lors de l'import de clé privée
- Erreurs lors de la validation du format de clé
- Erreurs lors du remplacement d'un compte
Points de contrôle
- Affichage correct des clés publiques (npub et hex)
- Extraction correcte de la clé depuis une URL
- Validation correcte des formats (nsec, hex)
- Gestion correcte du remplacement de compte
- Affichage correct des mots de récupération
- Copie correcte des clés et mots de récupération
Tests à effectuer
-
Consultation des clés publiques :
- Vérifier l'affichage du npub
- Vérifier l'affichage de la clé hex
- Tester la copie de chaque format
-
Import de clé privée :
- Tester l'import avec une URL nostr://
- Tester l'import avec un nsec texte
- Tester l'import avec une clé hex
- Vérifier la validation des formats invalides
-
Remplacement de compte :
- Créer un compte
- Importer une nouvelle clé
- Vérifier l'avertissement et la confirmation
- Vérifier que l'ancien compte est supprimé
- Vérifier que le nouveau compte est créé
-
Sécurité :
- Vérifier que les mots de récupération sont affichés une seule fois
- Vérifier que la clé privée n'est jamais affichée
- Vérifier que le système de chiffrement à deux niveaux est respecté