Annotation of embedaddon/strongswan/src/libimcv/tcg/tcg_attr.c, 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: #include "tcg_attr.h"
17: #include "tcg/pts/tcg_pts_attr_proto_caps.h"
18: #include "tcg/pts/tcg_pts_attr_dh_nonce_params_req.h"
19: #include "tcg/pts/tcg_pts_attr_dh_nonce_params_resp.h"
20: #include "tcg/pts/tcg_pts_attr_dh_nonce_finish.h"
21: #include "tcg/pts/tcg_pts_attr_meas_algo.h"
22: #include "tcg/pts/tcg_pts_attr_get_tpm_version_info.h"
23: #include "tcg/pts/tcg_pts_attr_tpm_version_info.h"
24: #include "tcg/pts/tcg_pts_attr_get_aik.h"
25: #include "tcg/pts/tcg_pts_attr_aik.h"
26: #include "tcg/pts/tcg_pts_attr_req_func_comp_evid.h"
27: #include "tcg/pts/tcg_pts_attr_gen_attest_evid.h"
28: #include "tcg/pts/tcg_pts_attr_simple_comp_evid.h"
29: #include "tcg/pts/tcg_pts_attr_simple_evid_final.h"
30: #include "tcg/pts/tcg_pts_attr_req_file_meas.h"
31: #include "tcg/pts/tcg_pts_attr_file_meas.h"
32: #include "tcg/pts/tcg_pts_attr_req_file_meta.h"
33: #include "tcg/pts/tcg_pts_attr_unix_file_meta.h"
34: #include "tcg/seg/tcg_seg_attr_max_size.h"
35: #include "tcg/seg/tcg_seg_attr_seg_env.h"
36: #include "tcg/seg/tcg_seg_attr_next_seg.h"
37:
38: ENUM_BEGIN(tcg_attr_names, TCG_SCAP_REFERENCES,
39: TCG_SCAP_SUMMARY_RESULTS,
40: "SCAP References",
41: "SCAP Capabilities and Inventory",
42: "SCAP Content",
43: "SCAP Assessment",
44: "SCAP Results",
45: "SCAP Summary Results");
46: ENUM_NEXT(tcg_attr_names, TCG_SWID_REQUEST,
47: TCG_SWID_SUBSCRIPTION_STATUS_RESP,
48: TCG_SCAP_SUMMARY_RESULTS,
49: "SWID Request",
50: "SWID Tag Identifier Inventory",
51: "SWID Tag Identifier Events",
52: "SWID Tag Inventory",
53: "SWID Tag Events",
54: "SWID Subscription Status Request",
55: "SWID Subscription Status Response");
56: ENUM_NEXT(tcg_attr_names, TCG_SEG_MAX_ATTR_SIZE_REQ,
57: TCG_SEG_CANCEL_SEG_EXCH,
58: TCG_SWID_SUBSCRIPTION_STATUS_RESP,
59: "Max Attribute Size Request",
60: "Max Attribute Size Response",
61: "Attribute Segment Envelope",
62: "Next Segment Request",
63: "Cancel Segment Exchange");
64: ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_FUNC_COMP_EVID,
65: TCG_PTS_REQ_FUNC_COMP_EVID,
66: TCG_SEG_CANCEL_SEG_EXCH,
67: "Request Functional Component Evidence");
68: ENUM_NEXT(tcg_attr_names, TCG_PTS_GEN_ATTEST_EVID,
69: TCG_PTS_GEN_ATTEST_EVID,
70: TCG_PTS_REQ_FUNC_COMP_EVID,
71: "Generate Attestation Evidence");
72: ENUM_NEXT(tcg_attr_names, TCG_PTS_SIMPLE_COMP_EVID,
73: TCG_PTS_SIMPLE_COMP_EVID,
74: TCG_PTS_GEN_ATTEST_EVID,
75: "Simple Component Evidence");
76: ENUM_NEXT(tcg_attr_names, TCG_PTS_SIMPLE_EVID_FINAL,
77: TCG_PTS_SIMPLE_EVID_FINAL,
78: TCG_PTS_SIMPLE_COMP_EVID,
79: "Simple Evidence Final");
80: ENUM_NEXT(tcg_attr_names, TCG_PTS_VERIFICATION_RESULT,
81: TCG_PTS_VERIFICATION_RESULT,
82: TCG_PTS_SIMPLE_EVID_FINAL,
83: "Verification Result");
84: ENUM_NEXT(tcg_attr_names, TCG_PTS_INTEG_REPORT,
85: TCG_PTS_INTEG_REPORT,
86: TCG_PTS_VERIFICATION_RESULT,
87: "Integrity Report");
88: ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_FILE_META,
89: TCG_PTS_REQ_FILE_META,
90: TCG_PTS_INTEG_REPORT,
91: "Request File Metadata");
92: ENUM_NEXT(tcg_attr_names, TCG_PTS_WIN_FILE_META,
93: TCG_PTS_WIN_FILE_META,
94: TCG_PTS_REQ_FILE_META,
95: "Windows-Style File Metadata");
96: ENUM_NEXT(tcg_attr_names, TCG_PTS_UNIX_FILE_META,
97: TCG_PTS_UNIX_FILE_META,
98: TCG_PTS_WIN_FILE_META,
99: "Unix-Style File Metadata");
100: ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_REGISTRY_VALUE,
101: TCG_PTS_REQ_REGISTRY_VALUE,
102: TCG_PTS_UNIX_FILE_META,
103: "Request Registry Value");
104: ENUM_NEXT(tcg_attr_names, TCG_PTS_REGISTRY_VALUE,
105: TCG_PTS_REGISTRY_VALUE,
106: TCG_PTS_REQ_REGISTRY_VALUE,
107: "Registry Value");
108: ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_FILE_MEAS,
109: TCG_PTS_REQ_FILE_MEAS,
110: TCG_PTS_REGISTRY_VALUE,
111: "Request File Measurement");
112: ENUM_NEXT(tcg_attr_names, TCG_PTS_FILE_MEAS,
113: TCG_PTS_FILE_MEAS,
114: TCG_PTS_REQ_FILE_MEAS,
115: "File Measurement");
116: ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_INTEG_MEAS_LOG,
117: TCG_PTS_REQ_INTEG_MEAS_LOG,
118: TCG_PTS_FILE_MEAS,
119: "Request Integrity Measurement Log");
120: ENUM_NEXT(tcg_attr_names, TCG_PTS_INTEG_MEAS_LOG,
121: TCG_PTS_INTEG_MEAS_LOG,
122: TCG_PTS_REQ_INTEG_MEAS_LOG,
123: "Integrity Measurement Log");
124: ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_PROTO_CAPS,
125: TCG_PTS_REQ_PROTO_CAPS,
126: TCG_PTS_INTEG_MEAS_LOG,
127: "Request PTS Protocol Capabilities");
128: ENUM_NEXT(tcg_attr_names, TCG_PTS_PROTO_CAPS,
129: TCG_PTS_PROTO_CAPS,
130: TCG_PTS_REQ_PROTO_CAPS,
131: "PTS Protocol Capabilities");
132: ENUM_NEXT(tcg_attr_names, TCG_PTS_DH_NONCE_PARAMS_REQ,
133: TCG_PTS_DH_NONCE_PARAMS_REQ,
134: TCG_PTS_PROTO_CAPS,
135: "DH Nonce Parameters Request");
136: ENUM_NEXT(tcg_attr_names, TCG_PTS_DH_NONCE_PARAMS_RESP,
137: TCG_PTS_DH_NONCE_PARAMS_RESP,
138: TCG_PTS_DH_NONCE_PARAMS_REQ,
139: "DH Nonce Parameters Response");
140: ENUM_NEXT(tcg_attr_names, TCG_PTS_DH_NONCE_FINISH,
141: TCG_PTS_DH_NONCE_FINISH,
142: TCG_PTS_DH_NONCE_PARAMS_RESP,
143: "DH Nonce Finish");
144: ENUM_NEXT(tcg_attr_names, TCG_PTS_MEAS_ALGO,
145: TCG_PTS_MEAS_ALGO,
146: TCG_PTS_DH_NONCE_FINISH,
147: "PTS Measurement Algorithm Request");
148: ENUM_NEXT(tcg_attr_names, TCG_PTS_MEAS_ALGO_SELECTION,
149: TCG_PTS_MEAS_ALGO_SELECTION,
150: TCG_PTS_MEAS_ALGO,
151: "PTS Measurement Algorithm");
152: ENUM_NEXT(tcg_attr_names, TCG_PTS_GET_TPM_VERSION_INFO,
153: TCG_PTS_GET_TPM_VERSION_INFO,
154: TCG_PTS_MEAS_ALGO_SELECTION,
155: "Get TPM Version Information");
156: ENUM_NEXT(tcg_attr_names, TCG_PTS_TPM_VERSION_INFO,
157: TCG_PTS_TPM_VERSION_INFO,
158: TCG_PTS_GET_TPM_VERSION_INFO,
159: "TPM Version Information");
160: ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_TEMPL_REF_MANI_SET_META,
161: TCG_PTS_REQ_TEMPL_REF_MANI_SET_META,
162: TCG_PTS_TPM_VERSION_INFO,
163: "Request Template Reference Manifest Set Metadata");
164: ENUM_NEXT(tcg_attr_names, TCG_PTS_TEMPL_REF_MANI_SET_META,
165: TCG_PTS_TEMPL_REF_MANI_SET_META,
166: TCG_PTS_REQ_TEMPL_REF_MANI_SET_META,
167: "Template Reference Manifest Set Metadata");
168: ENUM_NEXT(tcg_attr_names, TCG_PTS_UPDATE_TEMPL_REF_MANI,
169: TCG_PTS_UPDATE_TEMPL_REF_MANI,
170: TCG_PTS_TEMPL_REF_MANI_SET_META,
171: "Update Template Reference Manifest");
172: ENUM_NEXT(tcg_attr_names, TCG_PTS_GET_AIK,
173: TCG_PTS_GET_AIK,
174: TCG_PTS_UPDATE_TEMPL_REF_MANI,
175: "Get Attestation Identity Key");
176: ENUM_NEXT(tcg_attr_names, TCG_PTS_AIK,
177: TCG_PTS_AIK,
178: TCG_PTS_GET_AIK,
179: "Attestation Identity Key");
180: ENUM_END(tcg_attr_names, TCG_PTS_AIK);
181:
182: /**
183: * See header
184: */
185: pa_tnc_attr_t* tcg_attr_create_from_data(uint32_t type, size_t length, chunk_t value)
186: {
187: switch (type)
188: {
189: case TCG_SEG_MAX_ATTR_SIZE_REQ:
190: return tcg_seg_attr_max_size_create_from_data(length, value, TRUE);
191: case TCG_SEG_MAX_ATTR_SIZE_RESP:
192: return tcg_seg_attr_max_size_create_from_data(length, value, FALSE);
193: case TCG_SEG_ATTR_SEG_ENV:
194: return tcg_seg_attr_seg_env_create_from_data(length, value);
195: case TCG_SEG_NEXT_SEG_REQ:
196: return tcg_seg_attr_next_seg_create_from_data(length, value);
197: case TCG_PTS_REQ_PROTO_CAPS:
198: return tcg_pts_attr_proto_caps_create_from_data(length, value,
199: TRUE);
200: case TCG_PTS_PROTO_CAPS:
201: return tcg_pts_attr_proto_caps_create_from_data(length, value,
202: FALSE);
203: case TCG_PTS_DH_NONCE_PARAMS_REQ:
204: return tcg_pts_attr_dh_nonce_params_req_create_from_data(length,
205: value);
206: case TCG_PTS_DH_NONCE_PARAMS_RESP:
207: return tcg_pts_attr_dh_nonce_params_resp_create_from_data(length,
208: value);
209: case TCG_PTS_DH_NONCE_FINISH:
210: return tcg_pts_attr_dh_nonce_finish_create_from_data(length, value);
211: case TCG_PTS_MEAS_ALGO:
212: return tcg_pts_attr_meas_algo_create_from_data(length, value,
213: FALSE);
214: case TCG_PTS_MEAS_ALGO_SELECTION:
215: return tcg_pts_attr_meas_algo_create_from_data(length, value,
216: TRUE);
217: case TCG_PTS_GET_TPM_VERSION_INFO:
218: return tcg_pts_attr_get_tpm_version_info_create_from_data(length,
219: value);
220: case TCG_PTS_TPM_VERSION_INFO:
221: return tcg_pts_attr_tpm_version_info_create_from_data(length,
222: value);
223: case TCG_PTS_GET_AIK:
224: return tcg_pts_attr_get_aik_create_from_data(length, value);
225: case TCG_PTS_AIK:
226: return tcg_pts_attr_aik_create_from_data(length, value);
227: case TCG_PTS_REQ_FUNC_COMP_EVID:
228: return tcg_pts_attr_req_func_comp_evid_create_from_data(length,
229: value);
230: case TCG_PTS_GEN_ATTEST_EVID:
231: return tcg_pts_attr_gen_attest_evid_create_from_data(length, value);
232: case TCG_PTS_SIMPLE_COMP_EVID:
233: return tcg_pts_attr_simple_comp_evid_create_from_data(length,
234: value);
235: case TCG_PTS_SIMPLE_EVID_FINAL:
236: return tcg_pts_attr_simple_evid_final_create_from_data(length,
237: value);
238: case TCG_PTS_REQ_FILE_MEAS:
239: return tcg_pts_attr_req_file_meas_create_from_data(length, value);
240: case TCG_PTS_FILE_MEAS:
241: return tcg_pts_attr_file_meas_create_from_data(length, value);
242: case TCG_PTS_REQ_FILE_META:
243: return tcg_pts_attr_req_file_meta_create_from_data(length, value);
244: case TCG_PTS_UNIX_FILE_META:
245: return tcg_pts_attr_unix_file_meta_create_from_data(length, value);
246: /* unsupported TCG/SWID attributes */
247: case TCG_SWID_REQUEST:
248: case TCG_SWID_TAG_ID_INVENTORY:
249: case TCG_SWID_TAG_INVENTORY:
250: case TCG_SWID_TAG_ID_EVENTS:
251: case TCG_SWID_TAG_EVENTS:
252: case TCG_SWID_SUBSCRIPTION_STATUS_REQ:
253: case TCG_SWID_SUBSCRIPTION_STATUS_RESP:
254: /* unsupported TCG/PTS attributes */
255: case TCG_PTS_REQ_TEMPL_REF_MANI_SET_META:
256: case TCG_PTS_TEMPL_REF_MANI_SET_META:
257: case TCG_PTS_UPDATE_TEMPL_REF_MANI:
258: case TCG_PTS_VERIFICATION_RESULT:
259: case TCG_PTS_INTEG_REPORT:
260: case TCG_PTS_WIN_FILE_META:
261: case TCG_PTS_REQ_REGISTRY_VALUE:
262: case TCG_PTS_REGISTRY_VALUE:
263: case TCG_PTS_REQ_INTEG_MEAS_LOG:
264: case TCG_PTS_INTEG_MEAS_LOG:
265: default:
266: return NULL;
267: }
268: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>