labfy-investigation/include/models/evidence_record.h
2026-07-18 17:03:33 +02:00

274 lines
6.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************************************************************************
* @file evidence_record.h
* @brief Modèle représentant une preuve numérique persistée.
******************************************************************************/
#ifndef LABFY_INVESTIGATION_EVIDENCE_RECORD_H
#define LABFY_INVESTIGATION_EVIDENCE_RECORD_H
#include <glib.h>
G_BEGIN_DECLS
/**
* @brief Modèle opaque représentant une preuve numérique.
*/
typedef struct EvidenceRecord EvidenceRecord;
/**
* @brief État connu de lintégrité dune preuve.
*/
typedef enum
{
/**
* Aucune vérification dintégrité na encore été effectuée.
*/
EVIDENCE_INTEGRITY_STATUS_UNKNOWN,
/**
* Le fichier existe et son empreinte est conforme.
*/
EVIDENCE_INTEGRITY_STATUS_VALID,
/**
* Le fichier attendu est absent.
*/
EVIDENCE_INTEGRITY_STATUS_MISSING,
/**
* Le fichier existe, mais son contenu a changé.
*/
EVIDENCE_INTEGRITY_STATUS_MODIFIED,
/**
* La vérification dintégrité na pas pu être réalisée.
*/
EVIDENCE_INTEGRITY_STATUS_ERROR
} EvidenceIntegrityStatus;
/**
* @brief Codes derreur produits par EvidenceRecord.
*/
typedef enum
{
/**
* Un argument général est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_ARGUMENT,
/**
* Lidentifiant UUID est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_IDENTIFIER,
/**
* Un nom de fichier est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_NAME,
/**
* Le chemin relatif est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_PATH,
/**
* Lidentifiant du type de preuve est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_TYPE,
/**
* Lempreinte SHA-256 est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_SHA256,
/**
* Une date est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_DATE,
/**
* Le statut dintégrité est invalide.
*/
EVIDENCE_RECORD_ERROR_INVALID_STATUS
} EvidenceRecordError;
/**
* @brief Domaine derreur du modèle EvidenceRecord.
*/
#define EVIDENCE_RECORD_ERROR \
evidence_record_error_quark()
/**
* @brief Retourne le domaine derreur du modèle.
*
* @return Quark GLib associé à EvidenceRecord.
*/
GQuark evidence_record_error_quark(void);
/**
* @brief Crée un modèle représentant une preuve numérique.
*
* Toutes les chaînes sont copiées et appartiennent au nouvel objet.
*
* Les champs identifier, original_name, internal_name, relative_path,
* type_identifier, sha256 et imported_at sont obligatoires.
*
* collected_at, source et description peuvent être NULL.
*
* @param identifier Identifiant UUID de la preuve.
* @param original_name Nom du fichier au moment de la collecte.
* @param internal_name Nom utilisé pour le stockage dans lenquête.
* @param relative_path Chemin relatif depuis la racine de lenquête.
* @param type_identifier Identifiant métier du type de preuve.
* @param size_bytes Taille observée du fichier.
* @param sha256 Empreinte SHA-256 du fichier.
* @param imported_at Date UTC de limportation.
* @param collected_at Date UTC de collecte, ou NULL.
* @param source Description de la source, ou NULL.
* @param description Description facultative, ou NULL.
* @param integrity_status État dintégrité de la preuve.
* @param error Emplacement facultatif recevant une erreur.
*
* @return Nouveau modèle, ou NULL lorsque les données sont invalides.
*/
EvidenceRecord *evidence_record_new(
const char *identifier,
const char *original_name,
const char *internal_name,
const char *relative_path,
const char *type_identifier,
guint64 size_bytes,
const char *sha256,
const char *imported_at,
const char *collected_at,
const char *source,
const char *description,
EvidenceIntegrityStatus integrity_status,
GError **error
);
/**
* @brief Libère un modèle EvidenceRecord.
*
* Cette fonction accepte evidence_record == NULL.
*
* @param evidence_record Modèle à libérer.
*/
void evidence_record_free(
EvidenceRecord *evidence_record
);
/**
* @brief Retourne lidentifiant UUID de la preuve.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_identifier(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne le nom original du fichier.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_original_name(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne le nom interne du fichier.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_internal_name(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne le chemin relatif de la preuve.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_relative_path(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne lidentifiant du type de preuve.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_type_identifier(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne la taille observée de la preuve.
*
* @return Taille en octets, ou 0 lorsque lobjet est NULL.
*/
guint64 evidence_record_get_size_bytes(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne lempreinte SHA-256.
*
* Lempreinte est stockée en minuscules.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_sha256(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne la date UTC dimportation.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_imported_at(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne la date UTC de collecte.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_collected_at(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne la source déclarée de la preuve.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_source(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne la description de la preuve.
*
* @return Chaîne empruntée, ou NULL.
*/
const char *evidence_record_get_description(
const EvidenceRecord *evidence_record
);
/**
* @brief Retourne létat dintégrité de la preuve.
*
* @return État enregistré, ou EVIDENCE_INTEGRITY_STATUS_UNKNOWN
* lorsque lobjet est NULL.
*/
EvidenceIntegrityStatus evidence_record_get_integrity_status(
const EvidenceRecord *evidence_record
);
G_END_DECLS
#endif