/* SPDX-License-Identifier: BSD-2-Clause */ /******************************************************************************* * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG * All rights reserved. *******************************************************************************/ #ifndef IFAPI_HELPERS_H #define IFAPI_HELPERS_H #include #include #include #include #include #include #include "tss2_esys.h" #include "tss2_fapi.h" #include "fapi_int.h" TSS2_RC ifapi_create_dirs(const char *supdir, const char *path); TSS2_RC ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template); TSS2_RC ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template, const char *policy); bool ifapi_path_type_p(const char *path, const char *type); ESYS_TR ifapi_get_hierary_handle(const char *path); bool ifapi_hierarchy_path_p(const char *path); bool ifapi_TPMT_PUBLIC_cmp(TPMT_PUBLIC *in1, TPMT_PUBLIC *in2); void ifapi_init_hierarchy_object( IFAPI_OBJECT *hierarchy, ESYS_TR esys_handle); char * get_description(IFAPI_OBJECT *object); size_t ifapi_path_length(NODE_STR_T *node); void ifapi_free_object_list(NODE_OBJECT_T *node); void ifapi_free_node_list(NODE_OBJECT_T *node); TSS2_RC ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name); TSS2_RC ifapi_path_string_n( char **dest, const char *supdir, NODE_STR_T *node, char *name, size_t n); TSS2_RC ifapi_asprintf(char **str, const char *fmt, ...); NODE_STR_T * split_string(const char *string, char *delimiter); NODE_STR_T * init_string_list(const char *string); bool add_string_to_list(NODE_STR_T *str_list, char *string); void free_string_list(NODE_STR_T *node); void ifapi_cleanup_policy( TPMS_POLICY *policy); TPMS_POLICY * ifapi_copy_policy( const TPMS_POLICY *from_policy); TSS2_RC ifapi_get_name( TPMT_PUBLIC *publicInfo, TPM2B_NAME *name); TSS2_RC ifapi_nv_get_name( TPM2B_NV_PUBLIC *publicInfo, TPM2B_NAME *name); TSS2_RC ifapi_object_cmp_name( IFAPI_OBJECT *object, void *name, bool *equal); TSS2_RC ifapi_object_cmp_nv_public( IFAPI_OBJECT *object, void *nv_public, bool *equal); TSS2_RC ifapi_tpm_to_fapi_signature( IFAPI_OBJECT *sig_key_object, TPMT_SIGNATURE *tpm_signature, uint8_t **signature, size_t *signatureSize); TSS2_RC ifapi_compute_quote_info( IFAPI_OBJECT *sig_key_object, TPM2B_ATTEST *tpm_quoted, char **quoteInfo); TSS2_RC ifapi_get_quote_info( char const *quoteInfo, TPM2B_ATTEST *tpm_quoted, FAPI_QUOTE_INFO *fapi_quote_ingo); TSS2_RC push_object_to_list(void *object, NODE_OBJECT_T **object_list); TSS2_RC append_object_to_list(void *object, NODE_OBJECT_T **object_list); bool object_with_auth(IFAPI_OBJECT *object); TSS2_RC ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index); TSS2_RC ifapi_check_profile_pcr_selection( const TPML_PCR_SELECTION *pcr_profile, const TPML_PCR_SELECTION *pcr_capablity); TSS2_RC ifapi_filter_pcr_selection_by_index( TPML_PCR_SELECTION *pcr_selection, const TPM2_HANDLE *pcr_index, size_t pcr_count); TSS2_RC ifapi_calculate_pcr_digest( json_object *jso_event_list, const FAPI_QUOTE_INFO *quote_info, TPM2B_DIGEST *pcr_digest); TSS2_RC ifapi_compute_policy_digest( TPML_PCRVALUES *pcrs, TPML_PCR_SELECTION *pcr_selection, TPMI_ALG_HASH hash_alg, TPM2B_DIGEST *pcr_digest); bool ifapi_cmp_public_key( TPM2B_PUBLIC *key1, TPM2B_PUBLIC *key2); int ifapi_get_curl_buffer( unsigned char * url, unsigned char ** buffer, size_t *cert_size); #endif /* IFAPI_HELPERS_H */