Annotation of embedaddon/strongswan/src/libimcv/pts/pts_file_meas.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2011 Sansar Choinyambuu
3: * Copyright (C) 2014 Andreas Steffen
4: * HSR Hochschule fuer Technik Rapperswil
5: *
6: * This program is free software; you can redistribute it and/or modify it
7: * under the terms of the GNU General Public License as published by the
8: * Free Software Foundation; either version 2 of the License, or (at your
9: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
10: *
11: * This program is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * for more details.
15: */
16:
17: /**
18: * @defgroup pts_file_meas pts_file_meas
19: * @{ @ingroup pts
20: */
21:
22: #ifndef PTS_FILE_MEAS_H_
23: #define PTS_FILE_MEAS_H_
24:
25: #include "pts/pts_database.h"
26:
27: #include <library.h>
28:
29: typedef struct pts_file_meas_t pts_file_meas_t;
30:
31: /**
32: * Class storing PTS File Measurements
33: */
34: struct pts_file_meas_t {
35:
36: /**
37: * Get the ID of the PTS File Measurement Request
38: *
39: * @return ID of PTS File Measurement Request
40: */
41: uint16_t (*get_request_id)(pts_file_meas_t *this);
42:
43: /**
44: * Get the number of measured files
45: *
46: * @return Number of measured files
47: */
48: int (*get_file_count)(pts_file_meas_t *this);
49:
50: /**
51: * Add a PTS File Measurement
52: *
53: * @param filename Name of measured file or directory
54: * @param measurement PTS Measurement hash
55: */
56: void (*add)(pts_file_meas_t *this, char *filename, chunk_t measurement);
57:
58: /**
59: * Create a PTS File Measurement enumerator
60: *
61: * @return Enumerator returning filename and measurement
62: */
63: enumerator_t* (*create_enumerator)(pts_file_meas_t *this);
64:
65: /**
66: * Check PTS File Measurements against reference value in the database
67: *
68: * @param db PTS Measurement database
69: * @param pid Primary key of software product in database
70: * @param algo PTS Measurement algorithm used
71: * @return TRUE if all measurements agreed
72: */
73: bool (*check)(pts_file_meas_t *this, pts_database_t *db, int pid,
74: pts_meas_algorithms_t algo);
75:
76: /**
77: * Verify stored hashes against PTS File Measurements
78: *
79: * @param e_hash Hash enumerator
80: * @param is_dir TRUE for directory contents hashes
81: * @return TRUE if all hashes match a measurement
82: */
83: bool (*verify)(pts_file_meas_t *this, enumerator_t *e_hash, bool is_dir);
84:
85: /**
86: * Destroys a pts_file_meas_t object.
87: */
88: void (*destroy)(pts_file_meas_t *this);
89:
90: };
91:
92: /**
93: * Creates a pts_file_meas_t object
94: *
95: * @param request_id ID of PTS File Measurement Request
96: */
97: pts_file_meas_t* pts_file_meas_create(uint16_t request_id);
98:
99: /**
100: * Creates a pts_file_meas_t object measuring a file/directory
101: *
102: * @param request_id ID of PTS File Measurement Request
103: * @param pathname Absolute file or directory pathname
104: * @param is_dir TRUE if directory path
105: * @param use_rel_name TRUE if relative filenames are to be used
106: * @param alg PTS hash measurement algorithm to be used
107: */
108: pts_file_meas_t* pts_file_meas_create_from_path(uint16_t request_id,
109: char* pathname, bool is_dir, bool use_rel_name,
110: pts_meas_algorithms_t alg);
111:
112: #endif /** PTS_FILE_MEAS_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>