1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*******************************************************************************
3  * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
4  * All rights reserved.
5  ******************************************************************************/
6 #ifndef FAPI_TPM_JSON_SERIALIZE_H
7 #define FAPI_TPM_JSON_SERIALIZE_H
8 
9 #include <stdbool.h>
10 #include <json-c/json.h>
11 #include <json-c/json_util.h>
12 
13 #include "tss2_tpm2_types.h"
14 #include "fapi_int.h"
15 
16 #define YES 1
17 #define NO 0
18 
19 TSS2_RC
20 ifapi_json_TPM2_HANDLE_serialize(const TPM2_HANDLE in, json_object **jso);
21 
22 TSS2_RC
23 ifapi_json_UINT16_serialize(const UINT16 in, json_object **jso);
24 
25 TSS2_RC
26 ifapi_json_UINT32_serialize(const UINT32 in, json_object **jso);
27 
28 TSS2_RC
29 ifapi_json_INT32_serialize(const INT32 in, json_object **jso);
30 
31 TSS2_RC
32 ifapi_json_UINT64_serialize(const UINT64 in, json_object **jso);
33 
34 TSS2_RC
35 ifapi_json_TPM2_GENERATED_serialize(const TPM2_GENERATED in, json_object **jso);
36 
37 TSS2_RC
38 ifapi_json_TPM2_ALG_ID_serialize(const TPM2_ALG_ID in, json_object **jso);
39 
40 TSS2_RC
41 ifapi_json_TPM2_ECC_CURVE_serialize(const TPM2_ECC_CURVE in, json_object **jso);
42 
43 TSS2_RC
44 ifapi_json_TPM2_CC_serialize(const TPM2_CC in, json_object **jso);
45 
46 TSS2_RC
47 ifapi_json_TPM2_EO_serialize(const TPM2_EO in, json_object **jso);
48 
49 TSS2_RC
50 ifapi_json_TPM2_ST_serialize(const TPM2_ST in, json_object **jso);
51 
52 TSS2_RC
53 ifapi_json_TPM2_CAP_serialize(const TPM2_CAP in, json_object **jso);
54 
55 TSS2_RC
56 ifapi_json_TPM2_PT_serialize(const TPM2_PT in, json_object **jso);
57 
58 TSS2_RC
59 ifapi_json_TPM2_PT_PCR_serialize(const TPM2_PT_PCR in, json_object **jso);
60 
61 TSS2_RC
62 ifapi_json_TPMA_ALGORITHM_serialize(const TPMA_ALGORITHM in, json_object **jso);
63 
64 TSS2_RC
65 ifapi_json_TPMA_OBJECT_serialize(const TPMA_OBJECT in, json_object **jso);
66 
67 TSS2_RC
68 ifapi_json_TPMA_LOCALITY_serialize(const TPMA_LOCALITY in, json_object **jso);
69 
70 TSS2_RC
71 ifapi_json_TPMA_CC_serialize(const TPMA_CC in, json_object **jso);
72 
73 TSS2_RC
74 ifapi_json_TPMI_YES_NO_serialize(const TPMI_YES_NO in, json_object **jso);
75 
76 TSS2_RC
77 ifapi_json_TPMI_RH_HIERARCHY_serialize(const TPMI_RH_HIERARCHY in,
78                                        json_object **jso);
79 
80 TSS2_RC
81 ifapi_json_TPMI_RH_NV_INDEX_serialize(const TPMI_RH_NV_INDEX in,
82                                       json_object **jso);
83 
84 TSS2_RC
85 ifapi_json_TPMI_ALG_HASH_serialize(const TPMI_ALG_HASH in, json_object **jso);
86 
87 TSS2_RC
88 ifapi_json_TPMI_ALG_SYM_OBJECT_serialize(const TPMI_ALG_SYM_OBJECT in,
89         json_object **jso);
90 
91 TSS2_RC
92 ifapi_json_TPMI_ALG_SYM_MODE_serialize(const TPMI_ALG_SYM_MODE in,
93                                        json_object **jso);
94 
95 TSS2_RC
96 ifapi_json_TPMI_ALG_CIPHER_MODE_serialize(const TPMI_ALG_CIPHER_MODE in,
97                                           json_object **jso);
98 
99 TSS2_RC
100 ifapi_json_TPMI_ALG_KDF_serialize(const TPMI_ALG_KDF in, json_object **jso);
101 
102 TSS2_RC
103 ifapi_json_TPMI_ALG_SIG_SCHEME_serialize(const TPMI_ALG_SIG_SCHEME in,
104         json_object **jso);
105 
106 TSS2_RC
107 ifapi_json_TPMS_EMPTY_serialize(const TPMS_EMPTY *in, json_object **jso);
108 
109 TSS2_RC
110 ifapi_json_TPMU_HA_serialize(const TPMU_HA *in, UINT32 selector,
111                              json_object **jso);
112 
113 TSS2_RC
114 ifapi_json_TPMT_HA_serialize(const TPMT_HA *in, json_object **jso);
115 
116 TSS2_RC
117 ifapi_json_TPM2B_DIGEST_serialize(const TPM2B_DIGEST *in, json_object **jso);
118 
119 TSS2_RC
120 ifapi_json_TPM2B_DATA_serialize(const TPM2B_DATA *in, json_object **jso);
121 
122 TSS2_RC
123 ifapi_json_TPM2B_NONCE_serialize(const TPM2B_NONCE *in, json_object **jso);
124 
125 TSS2_RC
126 ifapi_json_TPM2B_OPERAND_serialize(const TPM2B_OPERAND *in, json_object **jso);
127 
128 TSS2_RC
129 ifapi_json_TPM2B_EVENT_serialize(const TPM2B_EVENT *in, json_object **jso);
130 
131 TSS2_RC
132 ifapi_json_TPM2B_MAX_NV_BUFFER_serialize(const TPM2B_MAX_NV_BUFFER *in,
133         json_object **jso);
134 
135 TSS2_RC
136 ifapi_json_TPM2B_NAME_serialize(const TPM2B_NAME *in, json_object **jso);
137 
138 TSS2_RC
139 ifapi_json_TPMS_PCR_SELECT_serialize(const TPMS_PCR_SELECT *in,
140                                      json_object **jso);
141 
142 TSS2_RC
143 ifapi_json_TPMS_PCR_SELECTION_serialize(const TPMS_PCR_SELECTION *in,
144                                         json_object **jso);
145 
146 TSS2_RC
147 ifapi_json_TPMT_TK_CREATION_serialize(const TPMT_TK_CREATION *in,
148                                       json_object **jso);
149 
150 TSS2_RC
151 ifapi_json_TPMS_ALG_PROPERTY_serialize(const TPMS_ALG_PROPERTY *in,
152                                        json_object **jso);
153 
154 TSS2_RC
155 ifapi_json_TPMS_TAGGED_PROPERTY_serialize(const TPMS_TAGGED_PROPERTY *in,
156         json_object **jso);
157 
158 TSS2_RC
159 ifapi_json_TPMS_TAGGED_PCR_SELECT_serialize(const TPMS_TAGGED_PCR_SELECT *in,
160         json_object **jso);
161 
162 TSS2_RC
163 ifapi_json_TPML_CC_serialize(const TPML_CC *in, json_object **jso);
164 
165 TSS2_RC
166 ifapi_json_TPML_CCA_serialize(const TPML_CCA *in, json_object **jso);
167 
168 TSS2_RC
169 ifapi_json_TPML_HANDLE_serialize(const TPML_HANDLE *in, json_object **jso);
170 
171 TSS2_RC
172 ifapi_json_TPML_DIGEST_VALUES_serialize(const TPML_DIGEST_VALUES *in,
173                                         json_object **jso);
174 
175 TSS2_RC
176 ifapi_json_TPML_PCR_SELECTION_serialize(const TPML_PCR_SELECTION *in,
177                                         json_object **jso);
178 
179 TSS2_RC
180 ifapi_json_TPML_ALG_PROPERTY_serialize(const TPML_ALG_PROPERTY *in,
181                                        json_object **jso);
182 
183 TSS2_RC
184 ifapi_json_TPML_TAGGED_TPM_PROPERTY_serialize(const TPML_TAGGED_TPM_PROPERTY
185         *in, json_object **jso);
186 
187 TSS2_RC
188 ifapi_json_TPML_TAGGED_PCR_PROPERTY_serialize(const TPML_TAGGED_PCR_PROPERTY
189         *in, json_object **jso);
190 
191 TSS2_RC
192 ifapi_json_TPML_ECC_CURVE_serialize(const TPML_ECC_CURVE *in,
193                                     json_object **jso);
194 
195 TSS2_RC
196 ifapi_json_TPMU_CAPABILITIES_serialize(const TPMU_CAPABILITIES *in,
197                                        UINT32 selector, json_object **jso);
198 
199 TSS2_RC
200 ifapi_json_TPMS_CAPABILITY_DATA_serialize(const TPMS_CAPABILITY_DATA *in,
201         json_object **jso);
202 
203 TSS2_RC
204 ifapi_json_TPMS_CLOCK_INFO_serialize(const TPMS_CLOCK_INFO *in,
205                                      json_object **jso);
206 
207 TSS2_RC
208 ifapi_json_TPMS_TIME_INFO_serialize(const TPMS_TIME_INFO *in,
209                                     json_object **jso);
210 
211 TSS2_RC
212 ifapi_json_TPMS_TIME_ATTEST_INFO_serialize(const TPMS_TIME_ATTEST_INFO *in,
213         json_object **jso);
214 
215 TSS2_RC
216 ifapi_json_TPMS_CERTIFY_INFO_serialize(const TPMS_CERTIFY_INFO *in,
217                                        json_object **jso);
218 
219 TSS2_RC
220 ifapi_json_TPMS_QUOTE_INFO_serialize(const TPMS_QUOTE_INFO *in,
221                                      json_object **jso);
222 
223 TSS2_RC
224 ifapi_json_TPMS_COMMAND_AUDIT_INFO_serialize(const TPMS_COMMAND_AUDIT_INFO *in,
225         json_object **jso);
226 
227 TSS2_RC
228 ifapi_json_TPMS_SESSION_AUDIT_INFO_serialize(const TPMS_SESSION_AUDIT_INFO *in,
229         json_object **jso);
230 
231 TSS2_RC
232 ifapi_json_TPMS_CREATION_INFO_serialize(const TPMS_CREATION_INFO *in,
233                                         json_object **jso);
234 
235 TSS2_RC
236 ifapi_json_TPMS_NV_CERTIFY_INFO_serialize(const TPMS_NV_CERTIFY_INFO *in,
237         json_object **jso);
238 
239 TSS2_RC
240 ifapi_json_TPMI_ST_ATTEST_serialize(const TPMI_ST_ATTEST in, json_object **jso);
241 
242 TSS2_RC
243 ifapi_json_TPMU_ATTEST_serialize(const TPMU_ATTEST *in, UINT32 selector,
244                                  json_object **jso);
245 
246 TSS2_RC
247 ifapi_json_TPMS_ATTEST_serialize(const TPMS_ATTEST *in, json_object **jso);
248 
249 TSS2_RC
250 ifapi_json_TPMI_AES_KEY_BITS_serialize(const TPMI_AES_KEY_BITS in,
251                                        json_object **jso);
252 
253 TSS2_RC
254 ifapi_json_TPMU_SYM_KEY_BITS_serialize(const TPMU_SYM_KEY_BITS *in,
255                                        UINT32 selector, json_object **jso);
256 
257 TSS2_RC
258 ifapi_json_TPMU_SYM_MODE_serialize(const TPMU_SYM_MODE *in, UINT32 selector,
259                                    json_object **jso);
260 
261 TSS2_RC
262 ifapi_json_TPMT_SYM_DEF_OBJECT_serialize(const TPMT_SYM_DEF_OBJECT *in,
263         json_object **jso);
264 
265 TSS2_RC
266 ifapi_json_TPMS_SYMCIPHER_PARMS_serialize(const TPMS_SYMCIPHER_PARMS *in,
267         json_object **jso);
268 
269 TSS2_RC
270 ifapi_json_TPMS_SCHEME_HASH_serialize(const TPMS_SCHEME_HASH *in,
271                                       json_object **jso);
272 
273 TSS2_RC
274 ifapi_json_TPMS_SCHEME_ECDAA_serialize(const TPMS_SCHEME_ECDAA *in,
275                                        json_object **jso);
276 
277 TSS2_RC
278 ifapi_json_TPMI_ALG_KEYEDHASH_SCHEME_serialize(const TPMI_ALG_KEYEDHASH_SCHEME
279         in, json_object **jso);
280 
281 TSS2_RC
282 ifapi_json_TPMS_SCHEME_HMAC_serialize(const TPMS_SCHEME_HMAC *in,
283                                       json_object **jso);
284 
285 TSS2_RC
286 ifapi_json_TPMS_SCHEME_XOR_serialize(const TPMS_SCHEME_XOR *in,
287                                      json_object **jso);
288 
289 TSS2_RC
290 ifapi_json_TPMU_SCHEME_KEYEDHASH_serialize(const TPMU_SCHEME_KEYEDHASH *in,
291         UINT32 selector, json_object **jso);
292 
293 TSS2_RC
294 ifapi_json_TPMT_KEYEDHASH_SCHEME_serialize(const TPMT_KEYEDHASH_SCHEME *in,
295         json_object **jso);
296 
297 TSS2_RC
298 ifapi_json_TPMS_SIG_SCHEME_RSASSA_serialize(const TPMS_SIG_SCHEME_RSASSA *in,
299         json_object **jso);
300 
301 TSS2_RC
302 ifapi_json_TPMS_SIG_SCHEME_RSAPSS_serialize(const TPMS_SIG_SCHEME_RSAPSS *in,
303         json_object **jso);
304 
305 TSS2_RC
306 ifapi_json_TPMS_SIG_SCHEME_ECDSA_serialize(const TPMS_SIG_SCHEME_ECDSA *in,
307         json_object **jso);
308 
309 TSS2_RC
310 ifapi_json_TPMS_SIG_SCHEME_SM2_serialize(const TPMS_SIG_SCHEME_SM2 *in,
311         json_object **jso);
312 
313 TSS2_RC
314 ifapi_json_TPMS_SIG_SCHEME_ECSCHNORR_serialize(const TPMS_SIG_SCHEME_ECSCHNORR
315         *in, json_object **jso);
316 
317 TSS2_RC
318 ifapi_json_TPMS_SIG_SCHEME_ECDAA_serialize(const TPMS_SIG_SCHEME_ECDAA *in,
319         json_object **jso);
320 
321 TSS2_RC
322 ifapi_json_TPMU_SIG_SCHEME_serialize(const TPMU_SIG_SCHEME *in, UINT32 selector,
323                                      json_object **jso);
324 
325 TSS2_RC
326 ifapi_json_TPMT_SIG_SCHEME_serialize(const TPMT_SIG_SCHEME *in,
327                                      json_object **jso);
328 
329 TSS2_RC
330 ifapi_json_TPMS_ENC_SCHEME_OAEP_serialize(const TPMS_ENC_SCHEME_OAEP *in,
331         json_object **jso);
332 
333 TSS2_RC
334 ifapi_json_TPMS_ENC_SCHEME_RSAES_serialize(const TPMS_ENC_SCHEME_RSAES *in,
335         json_object **jso);
336 
337 TSS2_RC
338 ifapi_json_TPMS_KEY_SCHEME_ECDH_serialize(const TPMS_KEY_SCHEME_ECDH *in,
339         json_object **jso);
340 
341 TSS2_RC
342 ifapi_json_TPMS_SCHEME_MGF1_serialize(const TPMS_SCHEME_MGF1 *in,
343                                       json_object **jso);
344 
345 TSS2_RC
346 ifapi_json_TPMS_SCHEME_KDF1_SP800_56A_serialize(const TPMS_SCHEME_KDF1_SP800_56A
347         *in, json_object **jso);
348 
349 TSS2_RC
350 ifapi_json_TPMS_SCHEME_KDF1_SP800_108_serialize(const TPMS_SCHEME_KDF1_SP800_108
351         *in, json_object **jso);
352 
353 TSS2_RC
354 ifapi_json_TPMU_KDF_SCHEME_serialize(const TPMU_KDF_SCHEME *in, UINT32 selector,
355                                      json_object **jso);
356 
357 TSS2_RC
358 ifapi_json_TPMT_KDF_SCHEME_serialize(const TPMT_KDF_SCHEME *in,
359                                      json_object **jso);
360 
361 TSS2_RC
362 ifapi_json_TPMI_ALG_ASYM_SCHEME_serialize(const TPMI_ALG_ASYM_SCHEME in,
363         json_object **jso);
364 
365 TSS2_RC
366 ifapi_json_TPMU_ASYM_SCHEME_serialize(const TPMU_ASYM_SCHEME *in,
367                                       UINT32 selector, json_object **jso);
368 
369 TSS2_RC
370 ifapi_json_TPMT_ASYM_SCHEME_serialize(const TPMT_ASYM_SCHEME *in,
371                                       json_object **jso);
372 
373 TSS2_RC
374 ifapi_json_TPMI_ALG_RSA_SCHEME_serialize(const TPMI_ALG_RSA_SCHEME in,
375         json_object **jso);
376 
377 TSS2_RC
378 ifapi_json_TPMT_RSA_SCHEME_serialize(const TPMT_RSA_SCHEME *in,
379                                      json_object **jso);
380 
381 TSS2_RC
382 ifapi_json_TPM2B_PUBLIC_KEY_RSA_serialize(const TPM2B_PUBLIC_KEY_RSA *in,
383         json_object **jso);
384 
385 TSS2_RC
386 ifapi_json_TPMI_RSA_KEY_BITS_serialize(const TPMI_RSA_KEY_BITS in,
387                                        json_object **jso);
388 
389 TSS2_RC
390 ifapi_json_TPM2B_ECC_PARAMETER_serialize(const TPM2B_ECC_PARAMETER *in,
391         json_object **jso);
392 
393 TSS2_RC
394 ifapi_json_TPMS_ECC_POINT_serialize(const TPMS_ECC_POINT *in,
395                                     json_object **jso);
396 
397 TSS2_RC
398 ifapi_json_TPMI_ALG_ECC_SCHEME_serialize(const TPMI_ALG_ECC_SCHEME in,
399         json_object **jso);
400 
401 TSS2_RC
402 ifapi_json_TPMI_ECC_CURVE_serialize(const TPMI_ECC_CURVE in, json_object **jso);
403 
404 TSS2_RC
405 ifapi_json_TPMT_ECC_SCHEME_serialize(const TPMT_ECC_SCHEME *in,
406                                      json_object **jso);
407 
408 TSS2_RC
409 ifapi_json_TPMS_SIGNATURE_RSA_serialize(const TPMS_SIGNATURE_RSA *in,
410                                         json_object **jso);
411 
412 TSS2_RC
413 ifapi_json_TPMS_SIGNATURE_RSASSA_serialize(const TPMS_SIGNATURE_RSASSA *in,
414         json_object **jso);
415 
416 TSS2_RC
417 ifapi_json_TPMS_SIGNATURE_RSAPSS_serialize(const TPMS_SIGNATURE_RSAPSS *in,
418         json_object **jso);
419 
420 TSS2_RC
421 ifapi_json_TPMS_SIGNATURE_ECC_serialize(const TPMS_SIGNATURE_ECC *in,
422                                         json_object **jso);
423 
424 TSS2_RC
425 ifapi_json_TPMS_SIGNATURE_ECDSA_serialize(const TPMS_SIGNATURE_ECDSA *in,
426         json_object **jso);
427 
428 TSS2_RC
429 ifapi_json_TPMS_SIGNATURE_ECDAA_serialize(const TPMS_SIGNATURE_ECDAA *in,
430         json_object **jso);
431 
432 TSS2_RC
433 ifapi_json_TPMS_SIGNATURE_SM2_serialize(const TPMS_SIGNATURE_SM2 *in,
434                                         json_object **jso);
435 
436 TSS2_RC
437 ifapi_json_TPMS_SIGNATURE_ECSCHNORR_serialize(const TPMS_SIGNATURE_ECSCHNORR
438         *in, json_object **jso);
439 
440 TSS2_RC
441 ifapi_json_TPMU_SIGNATURE_serialize(const TPMU_SIGNATURE *in, UINT32 selector,
442                                     json_object **jso);
443 
444 TSS2_RC
445 ifapi_json_TPMT_SIGNATURE_serialize(const TPMT_SIGNATURE *in,
446                                     json_object **jso);
447 
448 TSS2_RC
449 ifapi_json_TPM2B_ENCRYPTED_SECRET_serialize(const TPM2B_ENCRYPTED_SECRET *in,
450         json_object **jso);
451 
452 TSS2_RC
453 ifapi_json_TPMI_ALG_PUBLIC_serialize(const TPMI_ALG_PUBLIC in,
454                                      json_object **jso);
455 
456 TSS2_RC
457 ifapi_json_TPMU_PUBLIC_ID_serialize(const TPMU_PUBLIC_ID *in, UINT32 selector,
458                                     json_object **jso);
459 
460 TSS2_RC
461 ifapi_json_TPMS_KEYEDHASH_PARMS_serialize(const TPMS_KEYEDHASH_PARMS *in,
462         json_object **jso);
463 
464 TSS2_RC
465 ifapi_json_TPMS_RSA_PARMS_serialize(const TPMS_RSA_PARMS *in,
466                                     json_object **jso);
467 
468 TSS2_RC
469 ifapi_json_TPMS_ECC_PARMS_serialize(const TPMS_ECC_PARMS *in,
470                                     json_object **jso);
471 
472 TSS2_RC
473 ifapi_json_TPMU_PUBLIC_PARMS_serialize(const TPMU_PUBLIC_PARMS *in,
474                                        UINT32 selector, json_object **jso);
475 
476 TSS2_RC
477 ifapi_json_TPMT_PUBLIC_serialize(const TPMT_PUBLIC *in, json_object **jso);
478 
479 TSS2_RC
480 ifapi_json_TPM2B_PUBLIC_serialize(const TPM2B_PUBLIC *in, json_object **jso);
481 
482 TSS2_RC
483 ifapi_json_TPM2B_PRIVATE_serialize(const TPM2B_PRIVATE *in, json_object **jso);
484 
485 TSS2_RC
486 ifapi_json_TPM2_NT_serialize(const TPM2_NT in, json_object **jso);
487 
488 TSS2_RC
489 ifapi_json_TPMA_NV_serialize(const TPMA_NV in, json_object **jso);
490 
491 TSS2_RC
492 ifapi_json_TPMS_NV_PUBLIC_serialize(const TPMS_NV_PUBLIC *in,
493                                     json_object **jso);
494 
495 TSS2_RC
496 ifapi_json_TPM2B_NV_PUBLIC_serialize(const TPM2B_NV_PUBLIC *in,
497                                      json_object **jso);
498 
499 TSS2_RC
500 ifapi_json_TPMS_CREATION_DATA_serialize(const TPMS_CREATION_DATA *in,
501                                         json_object **jso);
502 
503 TSS2_RC
504 ifapi_json_TPM2B_CREATION_DATA_serialize(const TPM2B_CREATION_DATA *in,
505         json_object **jso);
506 
507 #endif /* FAPI_TPM_JSON_SERIALIZE_H */
508