Annotation of embedaddon/strongswan/src/libimcv/plugins/imv_attestation/attest_db.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2011-2014 Andreas Steffen
3: * HSR Hochschule fuer Technik Rapperswil
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: /**
17: * @defgroup attest_db_t attest_db
18: * @{ @ingroup libimcv
19: */
20:
21: #ifndef ATTEST_DB_H_
22: #define ATTEST_DB_H_
23:
24: #include <pts/pts_meas_algo.h>
25: #include <os_info/os_info.h>
26: #include <library.h>
27:
28: typedef struct attest_db_t attest_db_t;
29:
30: /**
31: * Attestation database object
32: */
33: struct attest_db_t {
34:
35: /**
36: * Set functional component to be queried
37: *
38: * @param comp functional component
39: * @param create if TRUE create database entry if it doesn't exist
40: * @return TRUE if successful
41: */
42: bool (*set_component)(attest_db_t *this, char *comp, bool create);
43:
44: /**
45: * Set primary key of the functional component to be queried
46: *
47: * @param fid primary key of functional component
48: * @return TRUE if successful
49: */
50: bool (*set_cid)(attest_db_t *this, int fid);
51:
52: /**
53: * Set directory to be queried
54: *
55: * @param dir directory
56: * @param create if TRUE create database entry if it doesn't exist
57: * @return TRUE if successful
58: */
59: bool (*set_directory)(attest_db_t *this, char *dir, bool create);
60:
61: /**
62: * Set primary key of the directory to be queried
63: *
64: * @param did primary key of directory
65: * @return TRUE if successful
66: */
67: bool (*set_did)(attest_db_t *this, int did);
68:
69: /**
70: * Set measurement file to be queried
71: *
72: * @param file measurement file
73: * @param create if TRUE create database entry if it doesn't exist
74: * @return TRUE if successful
75: */
76: bool (*set_file)(attest_db_t *this, char *file, bool create);
77:
78: /**
79: * Set primary key of the measurement file to be queried
80: *
81: * @param fid primary key of measurement file
82: * @return TRUE if successful
83: */
84: bool (*set_fid)(attest_db_t *this, int fid);
85:
86: /**
87: * Set path to directory where file[s] are to be measured
88: *
89: * @param meas_dir measurement directory
90: * @return TRUE if successful
91: */
92: bool (*set_meas_directory)(attest_db_t *this, char *dir);
93:
94: /**
95: * Set functional component to be queried
96: *
97: * @param key AIK
98: * @param create if TRUE create database entry if it doesn't exist
99: * @return TRUE if successful
100: */
101: bool (*set_key)(attest_db_t *this, chunk_t key, bool create);
102:
103: /**
104: * Set primary key of the AIK to be queried
105: *
106: * @param kid primary key of AIK
107: * @return TRUE if successful
108: */
109: bool (*set_kid)(attest_db_t *this, int kid);
110:
111: /**
112: * Set software package to be queried
113: *
114: * @param product software package
115: * @param create if TRUE create database entry if it doesn't exist
116: * @return TRUE if successful
117: */
118: bool (*set_package)(attest_db_t *this, char *package, bool create);
119:
120: /**
121: * Set primary key of the software package to be queried
122: *
123: * @param gid primary key of software package
124: * @return TRUE if successful
125: */
126: bool (*set_gid)(attest_db_t *this, int gid);
127:
128: /**
129: * Set software product to be queried
130: *
131: * @param product software product
132: * @param create if TRUE create database entry if it doesn't exist
133: * @return TRUE if successful
134: */
135: bool (*set_product)(attest_db_t *this, char *product, bool create);
136:
137: /**
138: * Set primary key of the software product to be queried
139: *
140: * @param pid primary key of software product
141: * @return TRUE if successful
142: */
143: bool (*set_pid)(attest_db_t *this, int pid);
144:
145: /**
146: * Set software package version to be queried
147: *
148: * @param version software package version
149: * @return TRUE if successful
150: */
151: bool (*set_version)(attest_db_t *this, char *version);
152:
153: /**
154: * Set measurement hash algorithm
155: *
156: * @param algo hash algorithm
157: */
158: void (*set_algo)(attest_db_t *this, pts_meas_algorithms_t algo);
159:
160: /**
161: * Set that the IMA-specific SHA-1 template hash be computed
162: */
163: void (*set_ima)(attest_db_t *this);
164:
165: /**
166: * Set that relative filenames are to be used
167: */
168: void (*set_relative)(attest_db_t *this);
169:
170: /**
171: * Set the package security or blacklist state
172: */
173: void (*set_package_state)(attest_db_t *this, os_package_state_t package_state);
174:
175: /**
176: * Set the sequence number
177: */
178: void (*set_sequence)(attest_db_t *this, int seq_no);
179:
180: /**
181: * Set owner [user/host] of an AIK
182: *
183: * @param owner user/host name
184: * @return TRUE if successful
185: */
186: void (*set_owner)(attest_db_t *this, char *owner);
187:
188: /**
189: * Display all dates in UTC
190: */
191: void (*set_utc)(attest_db_t *this);
192:
193: /**
194: * List all packages stored in the database
195: */
196: void (*list_packages)(attest_db_t *this);
197:
198: /**
199: * List all products stored in the database
200: */
201: void (*list_products)(attest_db_t *this);
202:
203: /**
204: * List all directories stored in the database
205: */
206: void (*list_directories)(attest_db_t *this);
207:
208: /**
209: * List selected files stored in the database
210: */
211: void (*list_files)(attest_db_t *this);
212:
213: /**
214: * List all components stored in the database
215: */
216: void (*list_components)(attest_db_t *this);
217:
218: /**
219: * List all devices stored in the database
220: */
221: void (*list_devices)(attest_db_t *this);
222:
223: /**
224: * List all AIKs stored in the database
225: */
226: void (*list_keys)(attest_db_t *this);
227:
228: /**
229: * List selected measurement hashes stored in the database
230: */
231: void (*list_hashes)(attest_db_t *this);
232:
233: /**
234: * List selected component measurement stored in the database
235: */
236: void (*list_measurements)(attest_db_t *this);
237:
238: /**
239: * List sessions stored in the database
240: */
241: void (*list_sessions)(attest_db_t *this);
242:
243: /**
244: * Add an entry to the database
245: */
246: bool (*add)(attest_db_t *this);
247:
248: /**
249: * Delete an entry from the database
250: */
251: bool (*delete)(attest_db_t *this);
252:
253: /**
254: * Destroy attest_db_t object
255: */
256: void (*destroy)(attest_db_t *this);
257:
258: };
259:
260: /**
261: * Create an attest_db_t instance
262: *
263: * @param uri database URI
264: */
265: attest_db_t* attest_db_create(char *uri);
266:
267: #endif /** ATTEST_DB_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>