]> git.ipfire.org Git - thirdparty/strongswan.git/blame - src/libimcv/tcg/tcg_attr.c
libimcv: Removed TCG SWID IMC/IMV support
[thirdparty/strongswan.git] / src / libimcv / tcg / tcg_attr.c
CommitLineData
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
38ENUM_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 46ENUM_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
56ENUM_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 64ENUM_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");
68ENUM_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");
72ENUM_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");
76ENUM_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");
80ENUM_NEXT(tcg_attr_names, TCG_PTS_VERIFICATION_RESULT,
81 TCG_PTS_VERIFICATION_RESULT,
82 TCG_PTS_SIMPLE_EVID_FINAL,
83 "Verification Result");
84ENUM_NEXT(tcg_attr_names, TCG_PTS_INTEG_REPORT,
85 TCG_PTS_INTEG_REPORT,
86 TCG_PTS_VERIFICATION_RESULT,
87 "Integrity Report");
88ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_FILE_META,
89 TCG_PTS_REQ_FILE_META,
90 TCG_PTS_INTEG_REPORT,
91 "Request File Metadata");
92ENUM_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");
96ENUM_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");
100ENUM_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");
104ENUM_NEXT(tcg_attr_names, TCG_PTS_REGISTRY_VALUE,
105 TCG_PTS_REGISTRY_VALUE,
106 TCG_PTS_REQ_REGISTRY_VALUE,
107 "Registry Value");
108ENUM_NEXT(tcg_attr_names, TCG_PTS_REQ_FILE_MEAS,
109 TCG_PTS_REQ_FILE_MEAS,
110 TCG_PTS_REGISTRY_VALUE,
111 "Request File Measurement");
112ENUM_NEXT(tcg_attr_names, TCG_PTS_FILE_MEAS,
113 TCG_PTS_FILE_MEAS,
114 TCG_PTS_REQ_FILE_MEAS,
115 "File Measurement");
116ENUM_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");
120ENUM_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");
124ENUM_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");
128ENUM_NEXT(tcg_attr_names, TCG_PTS_PROTO_CAPS,
129 TCG_PTS_PROTO_CAPS,
130 TCG_PTS_REQ_PROTO_CAPS,
131 "PTS Protocol Capabilities");
132ENUM_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");
136ENUM_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");
140ENUM_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");
144ENUM_NEXT(tcg_attr_names, TCG_PTS_MEAS_ALGO,
145 TCG_PTS_MEAS_ALGO,
146 TCG_PTS_DH_NONCE_FINISH,
147 "PTS Measurement Algorithm Request");
148ENUM_NEXT(tcg_attr_names, TCG_PTS_MEAS_ALGO_SELECTION,
149 TCG_PTS_MEAS_ALGO_SELECTION,
150 TCG_PTS_MEAS_ALGO,
151 "PTS Measurement Algorithm");
152ENUM_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");
156ENUM_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");
160ENUM_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");
164ENUM_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");
168ENUM_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");
172ENUM_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");
176ENUM_NEXT(tcg_attr_names, TCG_PTS_AIK,
177 TCG_PTS_AIK,
178 TCG_PTS_GET_AIK,
179 "Attestation Identity Key");
180ENUM_END(tcg_attr_names, TCG_PTS_AIK);
74eb850d
AS
181
182/**
183 * See header
184 */
b12c53ce 185pa_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}