blob: 8b474ef6efe4ef485fd727ce832c026f24a8a772 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*******************************************************************************
* Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
* All rights reserved.
*******************************************************************************/
#ifndef FAPI_UTIL_H
#define FAPI_UTIL_H
#include <stdint.h>
#include <stdarg.h>
#include <stdbool.h>
#include <sys/stat.h>
#include <json-c/json.h>
#include <json-c/json_util.h>
#include "tss2_esys.h"
#include "tss2_fapi.h"
#include "fapi_int.h"
#include "ifapi_helpers.h"
TSS2_RC
ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR session);
TSS2_RC
ifapi_get_session_async(
ESYS_CONTEXT *esys,
ESYS_TR saltkey,
const IFAPI_PROFILE*profile,
TPMI_ALG_HASH hashAlg);
TSS2_RC
ifapi_get_session_finish(ESYS_CONTEXT *esys, ESYS_TR *session,
TPMA_SESSION flags);
const char *
ifapi_get_object_path(IFAPI_OBJECT *object);
TSS2_RC
ifapi_set_auth(
FAPI_CONTEXT *context,
IFAPI_OBJECT *auth_object,
const char *description);
TSS2_RC
ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle);
TSS2_RC
ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle,
TPM2_HANDLE max);
TSS2_RC
ifapi_init_primary_async(
FAPI_CONTEXT *context,
TSS2_KEY_TYPE ktype);
TSS2_RC
ifapi_init_primary_finish(
FAPI_CONTEXT *context,
TSS2_KEY_TYPE ktype,
IFAPI_OBJECT *hierarchy);
TSS2_RC
ifapi_session_init(FAPI_CONTEXT *context);
TSS2_RC
ifapi_non_tpm_mode_init(FAPI_CONTEXT *context);
void
ifapi_session_clean(FAPI_CONTEXT *context);
TSS2_RC
ifapi_cleanup_session(FAPI_CONTEXT *context);
void
ifapi_primary_clean(FAPI_CONTEXT *context);
TSS2_RC
ifapi_get_sessions_async(
FAPI_CONTEXT *context,
IFAPI_SESSION_TYPE session_flags,
TPMA_SESSION attribute_flags1,
TPMA_SESSION attribute_flags2);
TSS2_RC
ifapi_get_sessions_finish(
FAPI_CONTEXT *context,
const IFAPI_PROFILE *profile,
TPMI_ALG_HASH hash_alg);
TSS2_RC
ifapi_merge_profile_into_nv_template(
FAPI_CONTEXT *context,
IFAPI_NV_TEMPLATE *template);
TSS2_RC
ifapi_merge_profile_into_template(
const IFAPI_PROFILE *profile,
IFAPI_KEY_TEMPLATE *template);
TSS2_RC
ifapi_load_key_async(FAPI_CONTEXT *context, size_t position);
TSS2_RC
ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath);
TSS2_RC
ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent);
TSS2_RC
ifapi_load_keys_async(
FAPI_CONTEXT *context,
char const *keyPath);
TSS2_RC
ifapi_load_keys_finish(
FAPI_CONTEXT *context,
bool flush_parent,
ESYS_TR *handle,
IFAPI_OBJECT **key_object);
TSS2_RC
ifapi_nv_read(
FAPI_CONTEXT *context,
uint8_t **data,
size_t *size);
void
ifapi_flush_policy_session(
FAPI_CONTEXT *context,
ESYS_TR session,
TSS2_RC r);
TSS2_RC
ifapi_nv_write(
FAPI_CONTEXT *context,
char *nvPath,
size_t param_offset,
uint8_t const *data,
size_t size);
TSS2_RC
ifapi_get_random(
FAPI_CONTEXT *context,
size_t numBytes,
uint8_t **data);
TSS2_RC
ifapi_load_key(
FAPI_CONTEXT *context,
char const *keyPath,
IFAPI_OBJECT **key_object);
TSS2_RC
ifapi_key_sign(
FAPI_CONTEXT *context,
IFAPI_OBJECT *sig_key_object,
char const *padding,
TPM2B_DIGEST *digest,
TPMT_SIGNATURE **tpm_signature,
char **publicKey,
char **certificate);
TSS2_RC
ifapi_authorize_object(
FAPI_CONTEXT *context,
IFAPI_OBJECT *object,
ESYS_TR *session);
TSS2_RC
ifapi_get_json(
FAPI_CONTEXT *context,
IFAPI_OBJECT *object,
char **json_string);
TSS2_RC
ifapi_key_create_prepare(
FAPI_CONTEXT *context,
char const *keyPath,
char const *policyPath);
TSS2_RC
ifapi_key_create_prepare_auth(
FAPI_CONTEXT *context,
char const *keyPath,
char const *policyPath,
char const *authValue);
TSS2_RC
ifapi_key_create_prepare_sensitive(
FAPI_CONTEXT *context,
char const *keyPath,
char const *policyPath,
size_t dataSize,
char const *authValue,
uint8_t const *data);
TSS2_RC
ifapi_key_create(
FAPI_CONTEXT *context,
IFAPI_KEY_TEMPLATE *template);
TSS2_RC
ifapi_get_sig_scheme(
FAPI_CONTEXT *context,
IFAPI_OBJECT *object,
char const *padding,
TPM2B_DIGEST *digest,
TPMT_SIG_SCHEME *sig_scheme);
TSS2_RC
ifapi_change_auth_hierarchy(
FAPI_CONTEXT *context,
ESYS_TR handle,
IFAPI_OBJECT *hierarchy_object,
TPM2B_AUTH *newAuthValue);
TSS2_RC
ifapi_change_policy_hierarchy(
FAPI_CONTEXT *context,
ESYS_TR handle,
IFAPI_OBJECT *hierarchy_object,
TPMS_POLICY *policy);
IFAPI_OBJECT
*ifapi_allocate_object(FAPI_CONTEXT *context);
void
ifapi_free_objects(FAPI_CONTEXT *context);
void
ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object);
TPM2_RC
ifapi_capability_init(FAPI_CONTEXT *context);
TPM2_RC
ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability,
UINT32 count, TPMS_CAPABILITY_DATA **capability_data);
TSS2_RC
ifapi_get_certificates(
FAPI_CONTEXT *context,
UINT32 min_handle,
UINT32 max_handle,
NODE_OBJECT_T **cert_list);
TSS2_RC
ifapi_initialize_object(
ESYS_CONTEXT *ectx,
IFAPI_OBJECT *object);
TSS2_RC
ifapi_esys_serialize_object(
ESYS_CONTEXT *ectx,
IFAPI_OBJECT *object);
TSS2_RC
ifapi_get_description(IFAPI_OBJECT *object, char **description);
void
ifapi_set_description(IFAPI_OBJECT *object, char *description);
TSS2_RC
ifapi_get_key_properties(
FAPI_CONTEXT *context,
char const *key_path,
bool *is_primary,
bool *in_null_hierarchy);
TSS2_RC
ifapi_create_primary(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template);
#endif /* FAPI_UTIL_H */