xref: /aosp_15_r20/external/tpm2-tss/src/tss2-fapi/ifapi_json_deserialize.h (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
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 
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_error(r,"BAD VALUE"); \
26     }
27 
28 bool
29 ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso);
30 
31 TSS2_RC
32 ifapi_json_char_deserialize(json_object *jso, char **out);
33 
34 TSS2_RC
35 ifapi_json_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out);
36 
37 TSS2_RC
38 ifapi_json_IFAPI_EXT_PUB_KEY_deserialize(json_object *jso,
39         IFAPI_EXT_PUB_KEY *out);
40 
41 TSS2_RC
42 ifapi_json_IFAPI_NV_deserialize(json_object *jso, IFAPI_NV *out);
43 
44 TSS2_RC
45 ifapi_json_IFAPI_HIERARCHY_deserialize(json_object *jso,  IFAPI_HIERARCHY *out);
46 
47 TSS2_RC
48 ifapi_json_IFAPI_OBJECT_deserialize(json_object *jso, IFAPI_OBJECT *out);
49 
50 TSS2_RC
51 ifapi_json_FAPI_QUOTE_INFO_deserialize(json_object *jso, FAPI_QUOTE_INFO *out);
52 
53 TSS2_RC
54 ifapi_json_IFAPI_EVENT_TYPE_deserialize(json_object *jso,
55                                         IFAPI_EVENT_TYPE *out);
56 
57 TSS2_RC
58 ifapi_json_IFAPI_EVENT_TYPE_deserialize_txt(json_object *jso,
59         IFAPI_EVENT_TYPE *out);
60 
61 TSS2_RC
62 ifapi_json_IFAPI_TSS_EVENT_deserialize(json_object *jso, IFAPI_TSS_EVENT *out);
63 
64 TSS2_RC
65 ifapi_json_IFAPI_IMA_EVENT_deserialize(json_object *jso, IFAPI_IMA_EVENT *out);
66 
67 TSS2_RC
68 ifapi_json_IFAPI_EVENT_UNION_deserialize(UINT32 selector, json_object *jso,
69         IFAPI_EVENT_UNION *out);
70 
71 TSS2_RC
72 ifapi_json_IFAPI_EVENT_deserialize(json_object *jso, IFAPI_EVENT *out);
73 
74 #endif /* IFAPI_JSON_DESERIALIZE_H */
75