tpm2-tss  3.2.1
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 <stdbool.h>
10 #include <json-c/json.h>
11 #include <json-c/json_util.h>
12 
13 #include "tss2_tpm2_types.h"
14 #include "ifapi_keystore.h"
15 #include "fapi_int.h"
16 #include "ifapi_eventlog_system.h"
17 
18 #define YES 1
19 #define NO 0
20 
21 #define GET_OPTIONAL(name, json_name, type) \
22  if (!ifapi_get_sub_object(jso, json_name, &jso2)) { \
23  memset(&out->name, 0, sizeof(type)); \
24  } else { \
25  r = ifapi_json_ ## type ## _deserialize (jso2, &out->name); \
26  return_if_error2(r, "Bad value for field \"%s\".", json_name); \
27  }
28 
29 
30 /*
31  * Deserialize an embedded structure of an complex TPM2B.
32  * To achieve backward compatibility both JSON representations, of the complex
33  * TPM2B, and of the embedded structure will be allowed.
34  */
35 #define GET_CONDITIONAL_TPM2B(name, json_name, tpm2b_type, type, field_name, cond_cnt) \
36  if (!ifapi_get_sub_object(jso, json_name, &jso2)) { \
37  memset(&out->name, 0, sizeof(type)); \
38  } else { \
39  cond_cnt++; \
40  json_object* jso_size; \
41  if (ifapi_get_sub_object(jso2, "size", &jso_size)) { \
42  tpm2b_type tmp = { 0 }; \
43  r = ifapi_json_ ## tpm2b_type ## _deserialize (jso2, &tmp); \
44  return_if_error2(r, "Bad value for field \"%s\".", json_name); \
45  out->name = tmp.field_name; \
46  } else { \
47  r = ifapi_json_ ## type ## _deserialize (jso2, &out->name); \
48  return_if_error2(r, "Bad value for field \"%s\".", json_name); \
49  } \
50  }
51 
52 bool
53 ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso);
54 
55 TSS2_RC
56 ifapi_json_char_deserialize(json_object *jso, char **out);
57 
58 TSS2_RC
59 ifapi_json_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out);
60 
61 TSS2_RC
63 
64 TSS2_RC
66  IFAPI_EXT_PUB_KEY *out);
67 
68 TSS2_RC
69 ifapi_json_IFAPI_NV_deserialize(json_object *jso, IFAPI_NV *out);
70 
71 TSS2_RC
73 
74 TSS2_RC
76 
77 TSS2_RC
79 
80 TSS2_RC
82  IFAPI_EVENT_TYPE *out);
83 
84 TSS2_RC
86  IFAPI_EVENT_TYPE *out);
87 
88 TSS2_RC
90  IFAPI_TSS_EVENT *out);
91 
92 TSS2_RC
93 ifapi_json_IFAPI_EVENT_UNION_deserialize(
94  UINT32 selector,
95  json_object *jso,
96  IFAPI_EVENT_UNION *out,
97  bool *verify);
98 
99 enum IFAPI_EVENT_ERROR_HANDLING {
100  DIGEST_CHECK_WARNING = 0,
101  DIGEST_CHECK_ERROR,
102  DO_NOT_CHECK_DIGEST
103 };
104 
105 TSS2_RC
106 ifapi_json_IFAPI_EVENT_deserialize(json_object *jso, IFAPI_EVENT *out,
107  enum IFAPI_EVENT_ERROR_HANDLING error_handling);
108 
109 TSS2_RC
110 ifapi_json_TPMS_EVENT_CELMGT_deserialize(json_object *jso, TPMS_EVENT_CELMGT *out);
111 
112 #endif /* IFAPI_JSON_DESERIALIZE_H */
TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_deserialize(json_object *jso, IFAPI_EVENT_TYPE *out)
Definition: ifapi_json_deserialize.c:771
TSS2_RC ifapi_json_IFAPI_OBJECT_deserialize(json_object *jso, IFAPI_OBJECT *out)
Definition: ifapi_json_deserialize.c:686
TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_deserialize_txt(json_object *jso, IFAPI_EVENT_TYPE *out)
Definition: ifapi_json_deserialize.c:797
TSS2_RC ifapi_json_IFAPI_TSS_EVENT_deserialize(json_object *jso, IFAPI_TSS_EVENT *out)
Definition: ifapi_json_deserialize.c:846
TSS2_RC ifapi_json_char_deserialize(json_object *jso, char **out)
Definition: ifapi_json_deserialize.c:93
TSS2_RC ifapi_json_FAPI_QUOTE_INFO_deserialize(json_object *jso, FAPI_QUOTE_INFO *out)
Definition: ifapi_json_deserialize.c:548
bool ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso)
Definition: tpm_json_deserialize.c:226
TSS2_RC ifapi_json_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out)
Definition: ifapi_json_deserialize.c:112
TSS2_RC ifapi_json_import_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out)
Definition: ifapi_json_deserialize.c:278
TSS2_RC ifapi_json_IFAPI_HIERARCHY_deserialize(json_object *jso, IFAPI_HIERARCHY *out)
Definition: ifapi_json_deserialize.c:493
TSS2_RC ifapi_json_IFAPI_EXT_PUB_KEY_deserialize(json_object *jso, IFAPI_EXT_PUB_KEY *out)
Definition: ifapi_json_deserialize.c:370
TSS2_RC ifapi_json_IFAPI_NV_deserialize(json_object *jso, IFAPI_NV *out)
Definition: ifapi_json_deserialize.c:414
Definition: ifapi_keystore.h:150
Definition: fapi_int.h:190
Definition: ifapi_eventlog.h:77
Definition: ifapi_keystore.h:53
Definition: ifapi_keystore.h:61
Definition: ifapi_keystore.h:29
Definition: ifapi_keystore.h:72
Definition: ifapi_eventlog.h:60
Definition: ifapi_eventlog.h:53
Definition: ifapi_eventlog.h:67