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