Annotation of embedaddon/strongswan/src/libimcv/pts/components/pts_comp_evidence.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2011 Sansar Choinyambuu, 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 pts_comp_evidence pts_comp_evidence
18: * @{ @ingroup pts
19: */
20:
21: #ifndef PTS_COMP_EVIDENCE_H_
22: #define PTS_COMP_EVIDENCE_H_
23:
24: typedef struct pts_comp_evidence_t pts_comp_evidence_t;
25: typedef enum pts_pcr_transform_t pts_pcr_transform_t;
26: typedef enum pts_comp_evid_validation_t pts_comp_evid_validation_t;
27:
28: #include "pts/pts_meas_algo.h"
29: #include "pts/components/pts_comp_func_name.h"
30:
31: #include <library.h>
32:
33: /**
34: * PTS PCR Transformations
35: */
36: enum pts_pcr_transform_t {
37: /** No Transformation */
38: PTS_PCR_TRANSFORM_NO = 0,
39: /** Hash Value matched PCR size */
40: PTS_PCR_TRANSFORM_MATCH = 1,
41: /** Hash value shorter than PCR size */
42: PTS_PCR_TRANSFORM_SHORT = 2,
43: /** Hash value longer than PCR size */
44: PTS_PCR_TRANSFORM_LONG = 3,
45: };
46:
47: /**
48: * PTS Component Evidence Validation Result Flags
49: */
50: enum pts_comp_evid_validation_t {
51: /** No Validation was attempted */
52: PTS_COMP_EVID_VALIDATION_NONE = 0x00,
53: /** Attempted validation, unable to verify */
54: PTS_COMP_EVID_VALIDATION_UNABLE = 0x20,
55: /** Attempted validation, verification failed */
56: PTS_COMP_EVID_VALIDATION_FAILED = 0x40,
57: /** Attempted validation, verification passed */
58: PTS_COMP_EVID_VALIDATION_PASSED = 0x60,
59: };
60:
61: /**
62: * PTS Functional Component Interface
63: */
64: struct pts_comp_evidence_t {
65:
66: /**
67: * Gets the Component Functional Name and Sub-Component Depth
68: *
69: * @param depth Sub-Component Depth
70: * @result Component Functional Name
71: */
72: pts_comp_func_name_t* (*get_comp_func_name)(pts_comp_evidence_t *this,
73: uint32_t *depth);
74:
75: /**
76: * Gets the PCR the measurement was extended into
77: *
78: * @result PCR the measurement was extended into
79: */
80: uint32_t (*get_extended_pcr)(pts_comp_evidence_t *this);
81:
82: /**
83: * Gets the measurement and the algorithms used
84: *
85: * @param extended_pcr PCR the measurement was extended into
86: * @param algo Measurement hash algorithm
87: * @param transform Transformation used for PCR extension
88: * @param measurement_time Time the measurement was taken
89: * @result Measurement hash value
90: */
91: chunk_t (*get_measurement)(pts_comp_evidence_t *this,
92: uint32_t *extended_pcr,
93: pts_meas_algorithms_t *algo,
94: pts_pcr_transform_t *transform,
95: time_t *measurement_time);
96:
97: /**
98: * Gets the PCR information if available
99: *
100: * @param pcr_before PCR value before extension
101: * @param pcr_after PCR value after extension
102: * @result TRUE if PCR information is available
103: */
104: bool (*get_pcr_info)(pts_comp_evidence_t *this, chunk_t *pcr_before,
105: chunk_t *pcr_after);
106:
107: /**
108: * Sets PCR information if available
109: *
110: * @param pcr_before PCR value before extension
111: * @param pcr_after PCR value after extension
112: */
113: void (*set_pcr_info)(pts_comp_evidence_t *this, chunk_t pcr_before,
114: chunk_t pcr_after);
115:
116: /**
117: * Gets Validation Result if available
118: *
119: * @param uri Verification Policy URI
120: * @return validation Validation Result
121: */
122: pts_comp_evid_validation_t (*get_validation)(pts_comp_evidence_t *this,
123: char **uri);
124:
125: /**
126: * Sets Validation Result if available
127: *
128: * @param validation Validation Result
129: * @param uri Verification Policy URI
130: */
131: void (*set_validation)(pts_comp_evidence_t *this,
132: pts_comp_evid_validation_t validation, char* uri);
133:
134: /**
135: * Destroys a pts_comp_evidence_t object.
136: */
137: void (*destroy)(pts_comp_evidence_t *this);
138:
139: };
140:
141: /**
142: * Creates a pts_comp_evidence_t object
143: *
144: * @param name Component Functional Name
145: * @param depth Sub-component depth
146: * @param extended_pcr PCR the measurement was extended into
147: * @param algo Measurement hash algorithm
148: * @param transform Transformation used for PCR extension
149: * @param measurement_time Time the measurement was taken, 0 if unknown
150: * @param measurement Measurement hash value
151: */
152: pts_comp_evidence_t* pts_comp_evidence_create(pts_comp_func_name_t *name,
153: uint32_t depth,
154: uint32_t extended_pcr,
155: pts_meas_algorithms_t algo,
156: pts_pcr_transform_t transform,
157: time_t measurement_time,
158: chunk_t measurement);
159:
160: /**
161: * Determine transform to fit measurement hash into PCR register
162: *
163: * @param algo Measurement hash algorithm
164: * @param pcr_len Length of the PCR registers in bytes
165: * @return PCR transform type
166: */
167: pts_pcr_transform_t pts_meas_algo_to_pcr_transform(pts_meas_algorithms_t algo,
168: size_t pcr_len);
169:
170: #endif /** PTS_COMP_EVIDENCE_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>