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