Vérifier l’intégrité d’une preuve depuis l’interface #53
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Vérifier l’intégrité d’une preuve depuis l’interface
Contexte
Lors de l’import d’une preuve, Labfy Investigation calcule et enregistre son empreinte SHA-256 dans SQLite.
L’application affiche déjà les preuves dans la sidebar, leur fiche détaillée dans le Workspace et leur statut d’intégrité. En revanche, il n’est pas encore possible de relancer une vérification depuis l’interface afin de confirmer qu’un fichier n’a pas été modifié, supprimé ou rendu illisible depuis son import.
Cette fonctionnalité doit renforcer la chaîne de conservation des preuves numériques sans modifier les fichiers originaux.
Objectif
Ajouter une action Vérifier l’intégrité dans la fiche détaillée d’une preuve.
Lors de son déclenchement, l’application doit :
relative_path;Statuts attendus
EVIDENCE_INTEGRITY_STATUS_UNKNOWN: la preuve n’a jamais été vérifiée ;EVIDENCE_INTEGRITY_STATUS_VALID: l’empreinte recalculée correspond à l’empreinte enregistrée ;EVIDENCE_INTEGRITY_STATUS_MODIFIED: l’empreinte recalculée est différente ;EVIDENCE_INTEGRITY_STATUS_MISSING: le fichier n’existe plus ;EVIDENCE_INTEGRITY_STATUS_ERROR: le fichier existe, mais la lecture ou le calcul a échoué.Architecture attendue
La logique doit rester séparée de GTK et de SQLite :
Les widgets GTK ne doivent pas accéder directement à SQLite.
Travail demandé
1. Ajouter la mise à jour du statut dans
EvidenceDaoAjouter une fonction publique :
La fonction doit :
EvidenceIntegrityStatus;2. Créer le vérificateur métier
Créer :
Le module doit être indépendant de GTK.
Il reçoit au minimum :
relative_pathde la preuve ;Il doit retourner un résultat contenant :
Le vérificateur ne doit jamais modifier le fichier.
3. Sécuriser la résolution du chemin
Le chemin absolu doit être construit à partir de :
Après canonicalisation, le chemin obtenu doit rester contenu dans la racine de l’enquête.
Les chemins absolus, les traversées avec
..et les liens symboliques permettant de sortir de l’enquête doivent être refusés.Une tentative de sortie de l’enquête doit produire un statut
ERROR.4. Réutiliser le calcul SHA-256 existant
Réutiliser le composant déjà employé lors de l’import des preuves.
Ne pas dupliquer une seconde implémentation du calcul SHA-256.
La comparaison des empreintes doit être stricte.
5. Créer une tâche asynchrone
La lecture et le calcul SHA-256 ne doivent pas bloquer le thread GTK.
Créer une tâche dédiée, par exemple :
La tâche doit :
TaskManageretBackgroundTask;6. Ajouter l’action dans le Workspace
Dans la fiche détaillée d’une preuve, ajouter un bouton compact :
Le bouton doit être accompagné d’une infobulle claire.
Le Workspace doit transmettre uniquement l’identifiant de la preuve à travers un callback public.
Exemple d’API :
Le Workspace ne doit ni ouvrir SQLite ni lancer directement la tâche.
7. Relayer l’action jusqu’à
ApplicationAjouter le relais nécessaire dans :
Applicationdoit :EvidenceRecordcomplet avecEvidenceDao;8. Messages utilisateur
Exemples de messages attendus :
Une erreur de rafraîchissement de l’interface ne doit pas être présentée comme un échec de la vérification si le statut a bien été enregistré.
Tests unitaires
Ajouter des tests pour
EvidenceDao:VALID;MODIFIED;NULL.Ajouter des tests pour
EvidenceIntegrityVerifier:..refusée ;Ajouter les nouvelles cibles au
Makefileet à la cible globaletest.Critères de validation
Le ticket est terminé lorsque :
VALID;MODIFIED;MISSING;ERROR;Hors périmètre
Ce ticket ne couvre pas :
Implémentation terminée.
Fonctionnalités ajoutées :
L’empreinte SHA-256 de référence n’est jamais remplacée par l’empreinte recalculée.
Tests automatiques et validations manuelles réussis.