Files
pyssh-client/app/key_manager.py
Florian 5fb965d7c2 refactor: unifier le calcul d'empreinte des cles SSH
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>
2026-09-05 01:43:24 +02:00

11 KiB