summaryrefslogtreecommitdiff
path: root/src/analysis/contents/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/contents/file.c')
-rw-r--r--src/analysis/contents/file.c35
1 files changed, 8 insertions, 27 deletions
diff --git a/src/analysis/contents/file.c b/src/analysis/contents/file.c
index 8416348..95cfd5d 100644
--- a/src/analysis/contents/file.c
+++ b/src/analysis/contents/file.c
@@ -24,7 +24,6 @@
#include "file.h"
-#include <assert.h>
#include <fcntl.h>
#include <malloc.h>
#include <string.h>
@@ -49,9 +48,6 @@ struct _GFileContent
bin_t *data; /* Contenu binaire représenté */
mrange_t range; /* Couverture du binaire */
- GChecksum *checksum; /* Calcul de l'empreinte */
- bool cs_computed; /* Calcul effectué ? */
-
};
/* Contenu de données binaires issues d'un fichier (classe) */
@@ -84,7 +80,7 @@ static const char *g_file_content_describe(const GFileContent *, bool);
static bool g_file_content_save(const GFileContent *, xmlDocPtr, xmlXPathContextPtr, const char *, const char *);
/* Fournit une empreinte unique (SHA256) pour les données. */
-static const gchar *g_file_content_get_checksum(GFileContent *);
+static void g_file_content_compute_checksum(GFileContent *, GChecksum *);
/* Détermine le nombre d'octets lisibles. */
static phys_t g_file_content_compute_size(const GFileContent *);
@@ -161,10 +157,6 @@ static void g_file_content_class_init(GFileContentClass *klass)
static void g_file_content_init(GFileContent *content)
{
- content->checksum = g_checksum_new(G_CHECKSUM_SHA256);
- assert(content->checksum != NULL);
-
- content->cs_computed = false;
}
@@ -187,7 +179,7 @@ static void g_file_content_interface_init(GBinContentInterface *iface)
iface->save = (save_content_fc)g_file_content_save;
- iface->get_checksum = (get_checksum_fc)g_file_content_get_checksum;
+ iface->compute_checksum = (compute_checksum_fc)g_file_content_compute_checksum;
iface->compute_size = (compute_size_fc)g_file_content_compute_size;
@@ -220,8 +212,6 @@ static void g_file_content_interface_init(GBinContentInterface *iface)
static void g_file_content_dispose(GFileContent *content)
{
- g_checksum_free(content->checksum);
-
G_OBJECT_CLASS(g_file_content_parent_class)->dispose(G_OBJECT(content));
}
@@ -444,29 +434,20 @@ static bool g_file_content_save(const GFileContent *content, xmlDocPtr xdoc, xml
/******************************************************************************
* *
-* Paramètres : content = contenu binaire à venir lire. *
+* Paramètres : content = contenu binaire à venir lire. *
+* checksum = empreinte de zone mémoire à compléter. *
* *
-* Description : Fournit une empreinte unique (SHA256) pour les données. *
+* Description : Calcule une empreinte unique (SHA256) pour les données. *
* *
-* Retour : Chaîne représentant l'empreinte du contenu binaire. *
+* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
-static const gchar *g_file_content_get_checksum(GFileContent *content)
+static void g_file_content_compute_checksum(GFileContent *content, GChecksum *checksum)
{
- if (!content->cs_computed)
- {
- g_checksum_reset(content->checksum);
-
- g_checksum_update(content->checksum, content->data, get_mrange_length(&content->range));
-
- content->cs_computed = true;
-
- }
-
- return g_checksum_get_string(content->checksum);
+ g_checksum_update(checksum, content->data, get_mrange_length(&content->range));
}