Annotation of embedaddon/strongswan/src/libimcv/imv/imv_session.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2013-2015 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: *
18: * @defgroup imv_session_t imv_session
19: * @{ @ingroup libimcv_imv
20: */
21:
22: #ifndef IMV_SESSION_H_
23: #define IMV_SESSION_H_
24:
25: #include "imv_workitem.h"
26: #include "imv_os_info.h"
27:
28: #include <tncifimv.h>
29: #include <library.h>
30:
31: #include <time.h>
32:
33: typedef struct imv_session_t imv_session_t;
34:
35: /**
36: * IMV session interface
37: */
38: struct imv_session_t {
39:
40: /**
41: * Set unique session ID
42: *
43: * @param session_id primary key into sessions table
44: * @param pid primary key into products table
45: * @param did Primary key into devices table
46: */
47: void (*set_session_id)(imv_session_t *this, int session_id, int pid, int did);
48:
49: /**
50: * Get unique session ID
51: *
52: * @param pid primary key into products table
53: * @param did Primary key into devices table
54: * @return primary key into sessions table
55: */
56: int (*get_session_id)(imv_session_t *this, int *pid, int *did);
57:
58: /**
59: * Get TNCCS Connection ID
60: *
61: * @return TNCCS Connection ID
62: */
63: TNC_ConnectionID (*get_connection_id)(imv_session_t *this);
64:
65: /**
66: * Set session creation time
67: *
68: * @param created Session creation time
69: */
70: void (*set_creation_time)(imv_session_t *this, time_t created);
71:
72: /**
73: * Get session creation time
74: *
75: * @return Session creation time
76: */
77: time_t (*get_creation_time)(imv_session_t *this);
78:
79: /**
80: * Get list of Access Requestor identities
81: *
82: * @return List of Access Requestor identities
83: */
84: enumerator_t* (*create_ar_identities_enumerator)(imv_session_t *this);
85:
86: /**
87: * Get OS Information
88: *
89: * @return OS info object
90: */
91: imv_os_info_t* (*get_os_info)(imv_session_t *this);
92:
93: /**
94: * Set Device ID
95: *
96: * @param device_id Device ID
97: */
98: void (*set_device_id)(imv_session_t *this, chunk_t device_id);
99:
100: /**
101: * Get Device ID
102: *
103: * @param device_id Device ID
104: * @return TRUE if Device ID has already been set
105: */
106: bool (*get_device_id)(imv_session_t *this, chunk_t *device_id);
107:
108: /**
109: * Set trust into Device ID
110: *
111: * @param trusted TRUE if Device ID is trusted
112: */
113: void (*set_device_trust)(imv_session_t *this, bool trusted);
114:
115:
116: /**
117: * Get device ID trust (needed for TPM-based attestation)
118: *
119: * @return TRUE if Device ID is trusted
120: */
121: bool (*get_device_trust)(imv_session_t *this);
122:
123: /**
124: * Set policy_started status
125: *
126: * @param start TRUE if policy started, FALSE if policy stopped
127: */
128: void (*set_policy_started)(imv_session_t *this, bool start);
129:
130: /**
131: * Get policy_started status
132: *
133: * @return TRUE if policy started, FALSE if policy stopped
134: */
135: bool (*get_policy_started)(imv_session_t *this);
136:
137: /**
138: * Insert workitem into list
139: *
140: * @param workitem Workitem to be inserted
141: */
142: void (*insert_workitem)(imv_session_t *this, imv_workitem_t *workitem);
143:
144: /**
145: * Remove workitem from list
146: *
147: * @param enumerator Enumerator pointing to workitem to be removed
148: */
149: void (*remove_workitem)(imv_session_t *this, enumerator_t *enumerator);
150:
151: /**
152: * Create workitem enumerator
153: *
154: */
155: enumerator_t* (*create_workitem_enumerator)(imv_session_t *this);
156:
157: /**
158: * Get number of workitem allocated to a given IMV
159: *
160: * @param imv_id IMV ID
161: * @return Number of workitems assigned to given IMV
162: */
163: int (*get_workitem_count)(imv_session_t *this, TNC_IMVID imv_id);
164:
165: /**
166: * Get reference to session
167: */
168: imv_session_t* (*get_ref)(imv_session_t*);
169:
170: /**
171: * Destroys an imv_session_t object
172: */
173: void (*destroy)(imv_session_t *this);
174: };
175:
176: /**
177: * Create an imv_session_t instance
178: *
179: * @param id Associated Connection ID
180: * @param ar_identities List of Access Requestor identities
181: */
182: imv_session_t* imv_session_create(TNC_ConnectionID id,
183: linked_list_t *ar_identities);
184:
185: #endif /** IMV_SESSION_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>