xref: /aosp_15_r20/external/tpm2-tss/src/tss2-fapi/ifapi_json_deserialize.h (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1*758e9fbaSOystein Eftevaag /* SPDX-License-Identifier: BSD-2-Clause */
2*758e9fbaSOystein Eftevaag /*******************************************************************************
3*758e9fbaSOystein Eftevaag  * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
4*758e9fbaSOystein Eftevaag  * All rights reserved.
5*758e9fbaSOystein Eftevaag  ******************************************************************************/
6*758e9fbaSOystein Eftevaag #ifndef IFAPI_JSON_DESERIALIZE_H
7*758e9fbaSOystein Eftevaag #define IFAPI_JSON_DESERIALIZE_H
8*758e9fbaSOystein Eftevaag 
9*758e9fbaSOystein Eftevaag #include <stdbool.h>
10*758e9fbaSOystein Eftevaag #include <json-c/json.h>
11*758e9fbaSOystein Eftevaag #include <json-c/json_util.h>
12*758e9fbaSOystein Eftevaag 
13*758e9fbaSOystein Eftevaag #include "tss2_tpm2_types.h"
14*758e9fbaSOystein Eftevaag #include "ifapi_keystore.h"
15*758e9fbaSOystein Eftevaag #include "fapi_int.h"
16*758e9fbaSOystein Eftevaag 
17*758e9fbaSOystein Eftevaag #define YES 1
18*758e9fbaSOystein Eftevaag #define NO 0
19*758e9fbaSOystein Eftevaag 
20*758e9fbaSOystein Eftevaag #define GET_OPTIONAL(name, json_name, type) \
21*758e9fbaSOystein Eftevaag     if (!ifapi_get_sub_object(jso, json_name, &jso2)) { \
22*758e9fbaSOystein Eftevaag         memset(&out->name, 0, sizeof(type)); \
23*758e9fbaSOystein Eftevaag     } else { \
24*758e9fbaSOystein Eftevaag         r =  ifapi_json_ ## type ## _deserialize (jso2, &out->name); \
25*758e9fbaSOystein Eftevaag         return_if_error(r,"BAD VALUE"); \
26*758e9fbaSOystein Eftevaag     }
27*758e9fbaSOystein Eftevaag 
28*758e9fbaSOystein Eftevaag bool
29*758e9fbaSOystein Eftevaag ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso);
30*758e9fbaSOystein Eftevaag 
31*758e9fbaSOystein Eftevaag TSS2_RC
32*758e9fbaSOystein Eftevaag ifapi_json_char_deserialize(json_object *jso, char **out);
33*758e9fbaSOystein Eftevaag 
34*758e9fbaSOystein Eftevaag TSS2_RC
35*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out);
36*758e9fbaSOystein Eftevaag 
37*758e9fbaSOystein Eftevaag TSS2_RC
38*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_EXT_PUB_KEY_deserialize(json_object *jso,
39*758e9fbaSOystein Eftevaag         IFAPI_EXT_PUB_KEY *out);
40*758e9fbaSOystein Eftevaag 
41*758e9fbaSOystein Eftevaag TSS2_RC
42*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_NV_deserialize(json_object *jso, IFAPI_NV *out);
43*758e9fbaSOystein Eftevaag 
44*758e9fbaSOystein Eftevaag TSS2_RC
45*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_HIERARCHY_deserialize(json_object *jso,  IFAPI_HIERARCHY *out);
46*758e9fbaSOystein Eftevaag 
47*758e9fbaSOystein Eftevaag TSS2_RC
48*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_OBJECT_deserialize(json_object *jso, IFAPI_OBJECT *out);
49*758e9fbaSOystein Eftevaag 
50*758e9fbaSOystein Eftevaag TSS2_RC
51*758e9fbaSOystein Eftevaag ifapi_json_FAPI_QUOTE_INFO_deserialize(json_object *jso, FAPI_QUOTE_INFO *out);
52*758e9fbaSOystein Eftevaag 
53*758e9fbaSOystein Eftevaag TSS2_RC
54*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_EVENT_TYPE_deserialize(json_object *jso,
55*758e9fbaSOystein Eftevaag                                         IFAPI_EVENT_TYPE *out);
56*758e9fbaSOystein Eftevaag 
57*758e9fbaSOystein Eftevaag TSS2_RC
58*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_EVENT_TYPE_deserialize_txt(json_object *jso,
59*758e9fbaSOystein Eftevaag         IFAPI_EVENT_TYPE *out);
60*758e9fbaSOystein Eftevaag 
61*758e9fbaSOystein Eftevaag TSS2_RC
62*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_TSS_EVENT_deserialize(json_object *jso, IFAPI_TSS_EVENT *out);
63*758e9fbaSOystein Eftevaag 
64*758e9fbaSOystein Eftevaag TSS2_RC
65*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_IMA_EVENT_deserialize(json_object *jso, IFAPI_IMA_EVENT *out);
66*758e9fbaSOystein Eftevaag 
67*758e9fbaSOystein Eftevaag TSS2_RC
68*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_EVENT_UNION_deserialize(UINT32 selector, json_object *jso,
69*758e9fbaSOystein Eftevaag         IFAPI_EVENT_UNION *out);
70*758e9fbaSOystein Eftevaag 
71*758e9fbaSOystein Eftevaag TSS2_RC
72*758e9fbaSOystein Eftevaag ifapi_json_IFAPI_EVENT_deserialize(json_object *jso, IFAPI_EVENT *out);
73*758e9fbaSOystein Eftevaag 
74*758e9fbaSOystein Eftevaag #endif /* IFAPI_JSON_DESERIALIZE_H */
75