generate_key() calculait une vraie empreinte SHA256, mais import_key() prenait juste pub_text.split()[1][:16] - un fragment de base64, pas une empreinte. - compute_fingerprint(public_key_line) : fonction unique (format "SHA256:xxxx...", comme ssh-keygen -lf), utilisee par generate_key() et import_key(). - KeyManager.load() corrige silencieusement les entrees existantes dont l'empreinte ne correspond pas a compute_fingerprint(public_key_text) (cas des cles importees avant ce correctif), et resauvegarde si necessaire. Ce commit branche aussi dans KeyManager les deux mecanismes ajoutes par les commits precedents : generate_key() ecrit desormais via app.storage.json_store (schema_version=1, .bak, ecriture atomique) et protege la cle privee avec app.security.key_protection.protect_private_key() a la place du chmod(0o600) precedent. Verifie par tests/test_atomic_storage.py (recalcul d'une empreinte tronquee au chargement) et tests/test_keys.py (format SHA256: pour toutes les cles generees). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
11 KiB
11 KiB