blob: f2ac5816a68f4b4b2792e9c3361fc97858dbbc6f [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*******************************************************************************
* Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
* All rights reserved.
******************************************************************************/
#ifndef IFAPI_JSON_DESERIALIZE_H
#define IFAPI_JSON_DESERIALIZE_H
#include <stdbool.h>
#include <json-c/json.h>
#include <json-c/json_util.h>
#include "tss2_tpm2_types.h"
#include "ifapi_keystore.h"
#include "fapi_int.h"
#define YES 1
#define NO 0
#define GET_OPTIONAL(name, json_name, type) \
if (!ifapi_get_sub_object(jso, json_name, &jso2)) { \
memset(&out->name, 0, sizeof(type)); \
} else { \
r = ifapi_json_ ## type ## _deserialize (jso2, &out->name); \
return_if_error(r,"BAD VALUE"); \
}
bool
ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso);
TSS2_RC
ifapi_json_char_deserialize(json_object *jso, char **out);
TSS2_RC
ifapi_json_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out);
TSS2_RC
ifapi_json_import_IFAPI_KEY_deserialize(json_object *jso, IFAPI_KEY *out);
TSS2_RC
ifapi_json_IFAPI_EXT_PUB_KEY_deserialize(json_object *jso,
IFAPI_EXT_PUB_KEY *out);
TSS2_RC
ifapi_json_IFAPI_NV_deserialize(json_object *jso, IFAPI_NV *out);
TSS2_RC
ifapi_json_IFAPI_HIERARCHY_deserialize(json_object *jso, IFAPI_HIERARCHY *out);
TSS2_RC
ifapi_json_IFAPI_OBJECT_deserialize(json_object *jso, IFAPI_OBJECT *out);
TSS2_RC
ifapi_json_FAPI_QUOTE_INFO_deserialize(json_object *jso, FAPI_QUOTE_INFO *out);
TSS2_RC
ifapi_json_IFAPI_EVENT_TYPE_deserialize(json_object *jso,
IFAPI_EVENT_TYPE *out);
TSS2_RC
ifapi_json_IFAPI_EVENT_TYPE_deserialize_txt(json_object *jso,
IFAPI_EVENT_TYPE *out);
TSS2_RC
ifapi_json_IFAPI_TSS_EVENT_deserialize(json_object *jso, IFAPI_TSS_EVENT *out);
TSS2_RC
ifapi_json_IFAPI_IMA_EVENT_deserialize(json_object *jso, IFAPI_IMA_EVENT *out);
TSS2_RC
ifapi_json_IFAPI_EVENT_UNION_deserialize(UINT32 selector, json_object *jso,
IFAPI_EVENT_UNION *out);
TSS2_RC
ifapi_json_IFAPI_EVENT_deserialize(json_object *jso, IFAPI_EVENT *out);
#endif /* IFAPI_JSON_DESERIALIZE_H */