PD-242 — Revue de Code¶
Reviewer : ChatGPT (gpt-5.3-codex) Date : 2026-02-19
Résumé¶
| Critère | Statut |
|---|---|
| Patterns React Native | ⚠️ |
| Qualité code | ✅ |
| Gestion erreurs | ⚠️ |
| Maintenabilité | ⚠️ |
Verdict : ⚠️ RÉSERVES
Points positifs¶
- Wrapper BIP-39 propre et lisible avec garde-fous explicites sur 24 mots/256 bits
- Bonne séparation des responsabilités : crypto dans
src/cryptoetsrc/services, UI dans composants/screens - Validation défensive cohérente dans
recoveryService.ts - Usage de primitives modernes adaptées RN/Hermes (
@noble/*, AES-GCM, HKDF) - Comparaison constant-time implémentée
- Effort explicite de zeroization et API de service testable
Points à améliorer¶
| ID | Description | Fichier | Gravité |
|---|---|---|---|
| R-01 | Zeroization non garantie en cas d'exception (seed hors finally) | recoveryService.ts | MAJEUR |
| R-02 | catch {} silencieux (perte de diagnostic) | RecoveryCreateScreen.tsx | MAJEUR |
| R-03 | Protection screenshot non implémentée (TODO) | MnemonicDisplay.tsx | MAJEUR |
| R-04 | Timer non resynchronisé si timeoutSeconds change | MnemonicDisplay.tsx | MINEUR |
| R-05 | Suggestions non indexées par champ actif | MnemonicInput.tsx | MINEUR |
| R-06 | Absence try/finally autour des opérations sensibles | RecoveryCreateScreen.tsx | MAJEUR |
| R-07 | CC-06/CC-07 non vérifiables (mocks API) | Screens | MAJEUR (à confirmer) |
Classification des écarts¶
Écarts bloquants (à corriger avant Gate 8)¶
- R-01, R-06 : Zeroization
try/finally→ à implémenter
Écarts documentés (hors scope PD-242)¶
- R-03 : Protection screenshot → INV-242-10 marqué comme "TODO (native requis)" dans spec
- R-07 : API backend → hors scope PD-242, dépend de PD-243
Écarts mineurs (non bloquants)¶
- R-02, R-04, R-05 : Améliorations UX/debug