tpm2-tss 4.2.0
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_json_deserialize.h
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 IFAPI_JSON_DESERIALIZE_H
7#define IFAPI_JSON_DESERIALIZE_H
8
9#include <json.h> // for json_object
10#include <stdbool.h> // for bool
11
12#include "ifapi_eventlog.h" // for IFAPI_EVENT_TYPE, FAPI_QUOTE_INFO, IFAPI...
13#include "ifapi_keystore.h" // for IFAPI_KEY, IFAPI_EXT_PUB_KEY, IFAPI_HIER...
14#include "ifapi_macros.h" // for return_if_error2
15#include "tss2_common.h" // for TSS2_RC, UINT32
16
17#define YES 1
18#define NO 0
19
20#define GET_OPTIONAL(name, json_name, type) \
21 if (!ifapi_get_sub_object(jso, json_name, &jso2)) { \
22 memset(&out->name, 0, sizeof(type)); \
23 } else { \
24 r = ifapi_json_##type##_deserialize(jso2, &out->name); \
25 return_if_error2(r, "Bad value for field \"%s\".", json_name); \
26 }
27
28/*
29 * Deserialize an embedded structure of an complex TPM2B.
30 * To achieve backward compatibility both JSON representations, of the complex
31 * TPM2B, and of the embedded structure will be allowed.
32 */
33#define GET_CONDITIONAL_TPM2B(name, json_name, tpm2b_type, type, field_name, cond_cnt) \
34 if (!ifapi_get_sub_object(jso, json_name, &jso2)) { \
35 memset(&out->name, 0, sizeof(type)); \
36 } else { \
37 (cond_cnt)++; \
38 json_object *jso_size; \
39 if (ifapi_get_sub_object(jso2, "size", &jso_size)) { \
40 tpm2b_type tmp = { 0 }; \
41 r = ifapi_json_##tpm2b_type##_deserialize(jso2, &tmp); \
42 return_if_error2(r, "Bad value for field \"%s\".", json_name); \
43 out->name = tmp.field_name; \
44 } else { \
45 r = ifapi_json_##type##_deserialize(jso2, &out->name); \
46 return_if_error2(r, "Bad value for field \"%s\".", json_name); \
47 } \
48 }
49
50bool ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso);
51
52TSS2_RC
53ifapi_json_char_deserialize(json_object *jso, char **out);
54
55TSS2_RC
56ifapi_json_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out);
57
58TSS2_RC
60
61TSS2_RC
63
64TSS2_RC
65ifapi_json_IFAPI_NV_deserialize(json_object *jso, IFAPI_NV *out);
66
67TSS2_RC
69
70TSS2_RC
72
73TSS2_RC
75
76TSS2_RC
77ifapi_json_IFAPI_EVENT_TYPE_deserialize(json_object *jso, IFAPI_EVENT_TYPE *out);
78
79TSS2_RC
80ifapi_json_IFAPI_EVENT_TYPE_deserialize_txt(json_object *jso, IFAPI_EVENT_TYPE *out);
81
82TSS2_RC
84
85TSS2_RC
86ifapi_json_IFAPI_EVENT_UNION_deserialize(UINT32 selector,
87 json_object *jso,
89 bool *verify);
90
91enum IFAPI_EVENT_ERROR_HANDLING {
92 DIGEST_CHECK_WARNING = 0,
93 DIGEST_CHECK_ERROR,
94 DO_NOT_CHECK_DIGEST
95};
96
97TSS2_RC
98ifapi_json_IFAPI_EVENT_deserialize(json_object *jso,
99 IFAPI_EVENT *out,
100 enum IFAPI_EVENT_ERROR_HANDLING error_handling);
101
102TSS2_RC
103ifapi_json_TPMS_EVENT_CELMGT_deserialize(json_object *jso, TPMS_EVENT_CELMGT *out);
104
105#endif /* IFAPI_JSON_DESERIALIZE_H */
TSS2_RC ifapi_json_import_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out)
Definition ifapi_json_deserialize.c:310
TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_deserialize(json_object *jso, IFAPI_EVENT_TYPE *out)
Definition ifapi_json_deserialize.c:783
TSS2_RC ifapi_json_IFAPI_OBJECT_deserialize(json_object *jso, IFAPI_OBJECT *out)
Definition ifapi_json_deserialize.c:699
TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_deserialize_txt(json_object *jso, IFAPI_EVENT_TYPE *out)
Definition ifapi_json_deserialize.c:807
TSS2_RC ifapi_json_IFAPI_TSS_EVENT_deserialize(json_object *jso, IFAPI_TSS_EVENT *out)
Definition ifapi_json_deserialize.c:848
TSS2_RC ifapi_json_char_deserialize(json_object *jso, char **out)
Definition ifapi_json_deserialize.c:121
TSS2_RC ifapi_json_FAPI_QUOTE_INFO_deserialize(json_object *jso, FAPI_QUOTE_INFO *out)
Definition ifapi_json_deserialize.c:566
bool ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso)
Definition tpm_json_deserialize.c:253
TSS2_RC ifapi_json_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out)
Definition ifapi_json_deserialize.c:137
TSS2_RC ifapi_json_IFAPI_HIERARCHY_deserialize(json_object *jso, IFAPI_HIERARCHY *out)
Definition ifapi_json_deserialize.c:516
TSS2_RC ifapi_json_IFAPI_EXT_PUB_KEY_deserialize(json_object *jso, IFAPI_EXT_PUB_KEY *out)
Definition ifapi_json_deserialize.c:397
TSS2_RC ifapi_json_IFAPI_NV_deserialize(json_object *jso, IFAPI_NV *out)
Definition ifapi_json_deserialize.c:438
Definition ifapi_eventlog.h:92
Definition ifapi_eventlog.h:80
Definition ifapi_keystore.h:61
Definition ifapi_keystore.h:69
Definition ifapi_keystore.h:31
Definition ifapi_keystore.h:80
Definition ifapi_keystore.h:153
Definition ifapi_eventlog.h:63
Definition ifapi_eventlog.h:56
Definition ifapi_eventlog.h:70