aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libpts/plugins/imv_attestation/imv_attestation_process.c12
-rw-r--r--src/libpts/pts/pts_file_meas.c17
-rw-r--r--src/libpts/pts/pts_file_meas.h11
3 files changed, 31 insertions, 9 deletions
diff --git a/src/libpts/plugins/imv_attestation/imv_attestation_process.c b/src/libpts/plugins/imv_attestation/imv_attestation_process.c
index 2ad5d78a5..842144f64 100644
--- a/src/libpts/plugins/imv_attestation/imv_attestation_process.c
+++ b/src/libpts/plugins/imv_attestation/imv_attestation_process.c
@@ -193,9 +193,8 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, linked_list_t *attr_list,
int file_count, file_id;
pts_meas_algorithms_t algo;
pts_file_meas_t *measurements;
- char *platform_info, *filename;
- chunk_t measurement;
- enumerator_t *e, *e_hash;
+ char *platform_info;
+ enumerator_t *e_hash;
bool is_dir;
platform_info = pts->get_platform_info(pts);
@@ -238,12 +237,7 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, linked_list_t *attr_list,
}
else
{
- e = measurements->create_enumerator(measurements);
- while (e->enumerate(e, &filename, &measurement))
- {
- DBG2(DBG_PTS, " %#B for '%s'", &measurement, filename);
- }
- e->destroy(e);
+ measurements->insert(measurements, pts_db, platform_info);
}
break;
}
diff --git a/src/libpts/pts/pts_file_meas.c b/src/libpts/pts/pts_file_meas.c
index f0e0d4c0a..8db3ea93f 100644
--- a/src/libpts/pts/pts_file_meas.c
+++ b/src/libpts/pts/pts_file_meas.c
@@ -107,6 +107,22 @@ METHOD(pts_file_meas_t, create_enumerator, enumerator_t*,
(void*)entry_filter, NULL, NULL);
}
+METHOD(pts_file_meas_t, insert, bool,
+ private_pts_file_meas_t *this, pts_database_t *pts_db, char *product)
+{
+ enumerator_t *enumerator;
+ entry_t *entry;
+
+ enumerator = this->list->create_enumerator(this->list);
+ while (enumerator->enumerate(enumerator, &entry))
+ {
+ DBG2(DBG_PTS, " %#B for '%s'", &entry->measurement, entry->filename);
+ }
+ enumerator->destroy(enumerator);
+
+ return TRUE;
+}
+
METHOD(pts_file_meas_t, verify, bool,
private_pts_file_meas_t *this, enumerator_t *e_hash, bool is_dir)
{
@@ -174,6 +190,7 @@ pts_file_meas_t *pts_file_meas_create(u_int16_t request_id)
.get_file_count = _get_file_count,
.add = _add,
.create_enumerator = _create_enumerator,
+ .insert = _insert,
.verify = _verify,
.destroy = _destroy,
},
diff --git a/src/libpts/pts/pts_file_meas.h b/src/libpts/pts/pts_file_meas.h
index 3ebb5c2a0..9b197e736 100644
--- a/src/libpts/pts/pts_file_meas.h
+++ b/src/libpts/pts/pts_file_meas.h
@@ -21,6 +21,8 @@
#ifndef PTS_FILE_MEAS_H_
#define PTS_FILE_MEAS_H_
+#include "pts/pts_database.h"
+
#include <library.h>
typedef struct pts_file_meas_t pts_file_meas_t;
@@ -60,6 +62,15 @@ struct pts_file_meas_t {
enumerator_t* (*create_enumerator)(pts_file_meas_t *this);
/**
+ * Insert PTS File Measurements into the database
+ *
+ * @param db PTS Measurement database
+ * @param product Software product (os, vpn client, etc.)
+ * @return TRUE if all measurements could be inserted
+ */
+ bool (*insert)(pts_file_meas_t *this, pts_database_t *db, char* product);
+
+ /**
* Verify stored hashes against PTS File Measurements
*
* @param e_hash Hash enumerator