]>
Commit | Line | Data |
---|---|---|
4a492a8d | 1 | /* |
f5096897 AS |
2 | * Copyright (C) 2011-2014 Andreas Steffen |
3 | * HSR Hochschule fuer Technik Rapperswil | |
4a492a8d AS |
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" | |
b38d9d5a AS |
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" | |
f5096897 | 34 | #include "tcg/seg/tcg_seg_attr_max_size.h" |
e911ac9a AS |
35 | #include "tcg/seg/tcg_seg_attr_seg_env.h" |
36 | #include "tcg/seg/tcg_seg_attr_next_seg.h" | |
4a492a8d | 37 | |
de218eb0 AS |
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"); | |
0bd29a43 | 46 | ENUM_NEXT(tcg_attr_names, TCG_SWID_REQUEST, |
bd60bcc3 | 47 | TCG_SWID_SUBSCRIPTION_STATUS_RESP, |
de218eb0 | 48 | TCG_SCAP_SUMMARY_RESULTS, |
0bd29a43 AS |
49 | "SWID Request", |
50 | "SWID Tag Identifier Inventory", | |
51 | "SWID Tag Identifier Events", | |
52 | "SWID Tag Inventory", | |
bd60bcc3 AS |
53 | "SWID Tag Events", |
54 | "SWID Subscription Status Request", | |
55 | "SWID Subscription Status Response"); | |
f5096897 AS |
56 | ENUM_NEXT(tcg_attr_names, TCG_SEG_MAX_ATTR_SIZE_REQ, |
57 | TCG_SEG_CANCEL_SEG_EXCH, | |
bd60bcc3 | 58 | TCG_SWID_SUBSCRIPTION_STATUS_RESP, |
f5096897 AS |
59 | "Max Attribute Size Request", |
60 | "Max Attribute Size Response", | |
61 | "Attribute Segment Envelope", | |
62 | "Next Segment Request", | |
63 | "Cancel Segment Exchange"); | |
de218eb0 | 64 | ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_FUNC_COMP_EVID, |
a1ac4d5e | 65 | TCG_PTS_REQ_FUNC_COMP_EVID, |
f5096897 | 66 | TCG_SEG_CANCEL_SEG_EXCH, |
4a492a8d AS |
67 | "Request Functional Component Evidence"); |
68 | ENUM_NEXT(tcg_attr_names, TCG_PTS_GEN_ATTEST_EVID, | |
69 | TCG_PTS_GEN_ATTEST_EVID, | |
a1ac4d5e | 70 | TCG_PTS_REQ_FUNC_COMP_EVID, |
4a492a8d AS |
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); | |
74eb850d AS |
181 | |
182 | /** | |
183 | * See header | |
184 | */ | |
b12c53ce | 185 | pa_tnc_attr_t* tcg_attr_create_from_data(uint32_t type, size_t length, chunk_t value) |
74eb850d AS |
186 | { |
187 | switch (type) | |
188 | { | |
f5096897 | 189 | case TCG_SEG_MAX_ATTR_SIZE_REQ: |
e77df5a1 | 190 | return tcg_seg_attr_max_size_create_from_data(length, value, TRUE); |
f5096897 | 191 | case TCG_SEG_MAX_ATTR_SIZE_RESP: |
e77df5a1 | 192 | return tcg_seg_attr_max_size_create_from_data(length, value, FALSE); |
e911ac9a | 193 | case TCG_SEG_ATTR_SEG_ENV: |
e77df5a1 | 194 | return tcg_seg_attr_seg_env_create_from_data(length, value); |
e911ac9a | 195 | case TCG_SEG_NEXT_SEG_REQ: |
e77df5a1 | 196 | return tcg_seg_attr_next_seg_create_from_data(length, value); |
74eb850d | 197 | case TCG_PTS_REQ_PROTO_CAPS: |
e77df5a1 AS |
198 | return tcg_pts_attr_proto_caps_create_from_data(length, value, |
199 | TRUE); | |
74eb850d | 200 | case TCG_PTS_PROTO_CAPS: |
e77df5a1 AS |
201 | return tcg_pts_attr_proto_caps_create_from_data(length, value, |
202 | FALSE); | |
9a49d2e0 | 203 | case TCG_PTS_DH_NONCE_PARAMS_REQ: |
e77df5a1 AS |
204 | return tcg_pts_attr_dh_nonce_params_req_create_from_data(length, |
205 | value); | |
9a49d2e0 | 206 | case TCG_PTS_DH_NONCE_PARAMS_RESP: |
e77df5a1 AS |
207 | return tcg_pts_attr_dh_nonce_params_resp_create_from_data(length, |
208 | value); | |
9a49d2e0 | 209 | case TCG_PTS_DH_NONCE_FINISH: |
e77df5a1 | 210 | return tcg_pts_attr_dh_nonce_finish_create_from_data(length, value); |
74eb850d | 211 | case TCG_PTS_MEAS_ALGO: |
e77df5a1 AS |
212 | return tcg_pts_attr_meas_algo_create_from_data(length, value, |
213 | FALSE); | |
74eb850d | 214 | case TCG_PTS_MEAS_ALGO_SELECTION: |
e77df5a1 AS |
215 | return tcg_pts_attr_meas_algo_create_from_data(length, value, |
216 | TRUE); | |
74eb850d | 217 | case TCG_PTS_GET_TPM_VERSION_INFO: |
e77df5a1 AS |
218 | return tcg_pts_attr_get_tpm_version_info_create_from_data(length, |
219 | value); | |
74eb850d | 220 | case TCG_PTS_TPM_VERSION_INFO: |
e77df5a1 AS |
221 | return tcg_pts_attr_tpm_version_info_create_from_data(length, |
222 | value); | |
74eb850d | 223 | case TCG_PTS_GET_AIK: |
e77df5a1 | 224 | return tcg_pts_attr_get_aik_create_from_data(length, value); |
74eb850d | 225 | case TCG_PTS_AIK: |
e77df5a1 | 226 | return tcg_pts_attr_aik_create_from_data(length, value); |
a1ac4d5e | 227 | case TCG_PTS_REQ_FUNC_COMP_EVID: |
e77df5a1 AS |
228 | return tcg_pts_attr_req_func_comp_evid_create_from_data(length, |
229 | value); | |
74eb850d | 230 | case TCG_PTS_GEN_ATTEST_EVID: |
e77df5a1 | 231 | return tcg_pts_attr_gen_attest_evid_create_from_data(length, value); |
74eb850d | 232 | case TCG_PTS_SIMPLE_COMP_EVID: |
e77df5a1 AS |
233 | return tcg_pts_attr_simple_comp_evid_create_from_data(length, |
234 | value); | |
74eb850d | 235 | case TCG_PTS_SIMPLE_EVID_FINAL: |
e77df5a1 AS |
236 | return tcg_pts_attr_simple_evid_final_create_from_data(length, |
237 | value); | |
74eb850d | 238 | case TCG_PTS_REQ_FILE_MEAS: |
e77df5a1 | 239 | return tcg_pts_attr_req_file_meas_create_from_data(length, value); |
74eb850d | 240 | case TCG_PTS_FILE_MEAS: |
e77df5a1 | 241 | return tcg_pts_attr_file_meas_create_from_data(length, value); |
3e951334 | 242 | case TCG_PTS_REQ_FILE_META: |
e77df5a1 | 243 | return tcg_pts_attr_req_file_meta_create_from_data(length, value); |
3e951334 | 244 | case TCG_PTS_UNIX_FILE_META: |
e77df5a1 | 245 | return tcg_pts_attr_unix_file_meta_create_from_data(length, value); |
4d2bac37 | 246 | /* unsupported TCG/SWID attributes */ |
a31f9b76 AS |
247 | case TCG_SWID_REQUEST: |
248 | case TCG_SWID_TAG_ID_INVENTORY: | |
249 | case TCG_SWID_TAG_INVENTORY: | |
b38d9d5a | 250 | case TCG_SWID_TAG_ID_EVENTS: |
b38d9d5a | 251 | case TCG_SWID_TAG_EVENTS: |
bd60bcc3 AS |
252 | case TCG_SWID_SUBSCRIPTION_STATUS_REQ: |
253 | case TCG_SWID_SUBSCRIPTION_STATUS_RESP: | |
4d2bac37 | 254 | /* unsupported TCG/PTS attributes */ |
74eb850d AS |
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: | |
74eb850d | 260 | case TCG_PTS_WIN_FILE_META: |
74eb850d AS |
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 | } |