124 lines
4.3 KiB
Markdown
124 lines
4.3 KiB
Markdown
# 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 `KeyManagementManager` dans `components/`
|
|
- 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 composant `KeyManagementManager` dans 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`
|
|
- 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
|
|
|
|
1. Vérifier que le composant compile sans erreur :
|
|
```bash
|
|
npm run type-check
|
|
npm run lint
|
|
```
|
|
|
|
2. 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
|
|
|
|
3. 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
|
|
1. **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
|
|
|
|
2. **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
|
|
|
|
3. **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éé
|
|
|
|
4. **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é
|