tpm2-tss  3.2.0
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_helpers.h
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_HELPERS_H
7 #define IFAPI_HELPERS_H
8 
9 #include <stdint.h>
10 #include <stdarg.h>
11 #include <stdbool.h>
12 #include <sys/stat.h>
13 #include <json-c/json.h>
14 #include <json-c/json_util.h>
15 
16 #include "tss2_esys.h"
17 #include "tss2_fapi.h"
18 #include "fapi_int.h"
19 
20 TSS2_RC
21 ifapi_create_dirs(const char *supdir, const char *path);
22 
23 TSS2_RC
24 ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template);
25 
26 TSS2_RC
27 ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template,
28  const char *policy);
29 
30 bool
31 ifapi_path_type_p(const char *path, const char *type);
32 
33 ESYS_TR
34 ifapi_get_hierary_handle(const char *path);
35 
36 bool
37 ifapi_null_primary_p(const char *path);
38 
39 bool
40 ifapi_hierarchy_path_p(const char *path);
41 
42 bool
43 ifapi_TPMT_PUBLIC_cmp(TPMT_PUBLIC *in1, TPMT_PUBLIC *in2);
44 
45 void
47  IFAPI_OBJECT *hierarchy,
48  ESYS_TR esys_handle);
49 
50 TSS2_RC
51 ifapi_set_name_hierarchy_object(
52  IFAPI_OBJECT *hierarchy);
53 
54 char *
55 get_description(IFAPI_OBJECT *object);
56 
57 size_t
59 
60 void
62 
63 void
65 
66 TSS2_RC
67 ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name);
68 
69 TSS2_RC
71  char **dest,
72  const char *supdir,
73  NODE_STR_T *node,
74  char *name,
75  size_t n);
76 
77 TSS2_RC
78 ifapi_asprintf(char **str, const char *fmt, ...);
79 
80 NODE_STR_T *
81 split_string(const char *string, char *delimiter);
82 
83 NODE_STR_T *
84 init_string_list(const char *string);
85 
86 bool
87 add_string_to_list(NODE_STR_T *str_list, char *string);
88 
89 void
91 
92 void
94  TPMS_POLICY *policy);
95 
98  const TPMS_POLICY *from_policy);
99 
100 TSS2_RC
102  TPMT_PUBLIC *publicInfo,
103  TPM2B_NAME *name);
104 
105 TSS2_RC
107  TPM2B_NV_PUBLIC *publicInfo,
108  TPM2B_NAME *name);
109 
110 TSS2_RC
112  IFAPI_OBJECT *object,
113  void *name,
114  bool *equal);
115 
116 TSS2_RC
118  IFAPI_OBJECT *object,
119  void *nv_public,
120  bool *equal);
121 
122 TSS2_RC
124  IFAPI_OBJECT *sig_key_object,
125  TPMT_SIGNATURE *tpm_signature,
126  uint8_t **signature,
127  size_t *signatureSize);
128 
129 TSS2_RC
131  IFAPI_OBJECT *sig_key_object,
132  TPM2B_ATTEST *tpm_quoted,
133  char **quoteInfo);
134 
135 TSS2_RC
137  char const *quoteInfo,
138  TPM2B_ATTEST *tpm_quoted,
139  FAPI_QUOTE_INFO *fapi_quote_ingo);
140 
141 TSS2_RC
142 push_object_to_list(void *object, NODE_OBJECT_T **object_list);
143 
144 TSS2_RC
145 append_object_to_list(void *object, NODE_OBJECT_T **object_list);
146 
147 bool
149 
150 TSS2_RC
151 ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index);
152 
153 TSS2_RC
154 ifapi_check_nv_index(const char *path, TPM2_HANDLE nv_index);
155 
156 TSS2_RC
158  const TPML_PCR_SELECTION *pcr_profile,
159  const TPML_PCR_SELECTION *pcr_capablity);
160 
161 TSS2_RC
163  TPML_PCR_SELECTION *pcr_selection,
164  const TPM2_HANDLE *pcr_index,
165  size_t pcr_count);
166 
168  json_object *jso_event_list,
169  const FAPI_QUOTE_INFO *quote_info,
170  TPM2B_DIGEST *pcr_digest);
171 
172 TSS2_RC
174  TPML_PCRVALUES *pcrs,
175  TPML_PCR_SELECTION *pcr_selection,
176  TPMI_ALG_HASH hash_alg,
177  TPM2B_DIGEST *pcr_digest);
178 
179 bool
181  TPM2B_PUBLIC *key1,
182  TPM2B_PUBLIC *key2);
183 
184 int
186  unsigned char * url,
187  unsigned char ** buffer,
188  size_t *cert_size);
189 
190 void
191 ifapi_check_json_object_fields(
192  json_object *jso,
193  char** field_tab,
194  size_t size_of_tab);
195 
196 #endif /* IFAPI_HELPERS_H */
TSS2_RC push_object_to_list(void *object, NODE_OBJECT_T **object_list)
Definition: ifapi_helpers.c:888
TSS2_RC ifapi_object_cmp_name(IFAPI_OBJECT *object, void *name, bool *equal)
Definition: ifapi_helpers.c:1598
TSS2_RC ifapi_compute_policy_digest(TPML_PCRVALUES *pcrs, TPML_PCR_SELECTION *pcr_selection, TPMI_ALG_HASH hash_alg, TPM2B_DIGEST *pcr_digest)
Definition: ifapi_helpers.c:2314
Definition: fapi_types.h:24
TSS2_RC ifapi_create_dirs(const char *supdir, const char *path)
Definition: ifapi_helpers.c:1073
int ifapi_get_curl_buffer(unsigned char *url, unsigned char **buffer, size_t *cert_size)
Definition: ifapi_helpers.c:2503
size_t ifapi_path_length(NODE_STR_T *node)
Definition: ifapi_helpers.c:706
TSS2_RC ifapi_compute_quote_info(IFAPI_OBJECT *sig_key_object, TPM2B_ATTEST *tpm_quoted, char **quoteInfo)
Definition: ifapi_helpers.c:1743
Definition: fapi_int.h:163
TSS2_RC ifapi_path_string_n(char **dest, const char *supdir, NODE_STR_T *node, char *name, size_t n)
Definition: ifapi_helpers.c:792
Definition: ifapi_keystore.h:143
void ifapi_init_hierarchy_object(IFAPI_OBJECT *hierarchy, ESYS_TR esys_handle)
Definition: ifapi_helpers.c:974
bool ifapi_hierarchy_path_p(const char *path)
Definition: ifapi_helpers.c:340
Definition: fapi_types.h:34
TSS2_RC ifapi_check_nv_index(const char *path, TPM2_HANDLE nv_index)
Definition: ifapi_helpers.c:1900
void free_string_list(NODE_STR_T *node)
Definition: ifapi_helpers.c:649
bool add_string_to_list(NODE_STR_T *str_list, char *string)
Definition: ifapi_helpers.c:861
TSS2_RC append_object_to_list(void *object, NODE_OBJECT_T **object_list)
Definition: ifapi_helpers.c:909
TSS2_RC ifapi_tpm_to_fapi_signature(IFAPI_OBJECT *sig_key_object, TPMT_SIGNATURE *tpm_signature, uint8_t **signature, size_t *signatureSize)
Definition: ifapi_helpers.c:1676
TSS2_RC ifapi_filter_pcr_selection_by_index(TPML_PCR_SELECTION *pcr_selection, const TPM2_HANDLE *pcr_index, size_t pcr_count)
Definition: ifapi_helpers.c:2241
TSS2_RC ifapi_nv_get_name(TPM2B_NV_PUBLIC *publicInfo, TPM2B_NAME *name)
Definition: ifapi_helpers.c:1530
NODE_STR_T * init_string_list(const char *string)
Definition: ifapi_helpers.c:834
NODE_STR_T * split_string(const char *string, char *delimiter)
Definition: ifapi_helpers.c:579
bool ifapi_TPMT_PUBLIC_cmp(TPMT_PUBLIC *in1, TPMT_PUBLIC *in2)
Definition: ifapi_helpers.c:504
Definition: ifapi_policy_types.h:291
uint32_t ESYS_TR
Definition: tss2_esys.h:16
ESYS_TR ifapi_get_hierary_handle(const char *path)
Definition: ifapi_helpers.c:272
bool object_with_auth(IFAPI_OBJECT *object)
Definition: ifapi_helpers.c:1101
bool ifapi_path_type_p(const char *path, const char *type)
Definition: ifapi_helpers.c:239
void ifapi_cleanup_policy(TPMS_POLICY *policy)
Definition: ifapi_helpers.c:1198
TSS2_RC ifapi_get_name(TPMT_PUBLIC *publicInfo, TPM2B_NAME *name)
Definition: ifapi_helpers.c:1467
bool ifapi_null_primary_p(const char *path)
Definition: ifapi_helpers.c:301
TSS2_RC ifapi_check_profile_pcr_selection(const TPML_PCR_SELECTION *pcr_profile, const TPML_PCR_SELECTION *pcr_capablity)
Definition: ifapi_helpers.c:2190
Definition: fapi_int.h:173
TSS2_RC ifapi_asprintf(char **str, const char *fmt,...)
Definition: ifapi_helpers.c:558
TSS2_RC ifapi_get_quote_info(char const *quoteInfo, TPM2B_ATTEST *tpm_quoted, FAPI_QUOTE_INFO *fapi_quote_ingo)
Definition: ifapi_helpers.c:1799
TPMS_POLICY * ifapi_copy_policy(const TPMS_POLICY *from_policy)
Definition: ifapi_helpers.c:1433
Definition: ifapi_policy_types.h:206
TSS2_RC ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index)
Definition: ifapi_helpers.c:1845
void ifapi_free_node_list(NODE_OBJECT_T *node)
Definition: ifapi_helpers.c:687
TSS2_RC ifapi_object_cmp_nv_public(IFAPI_OBJECT *object, void *nv_public, bool *equal)
Definition: ifapi_helpers.c:1639
TSS2_RC ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template)
Definition: ifapi_helpers.c:49
Definition: fapi_int.h:183
TSS2_RC ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name)
Definition: ifapi_helpers.c:751
TSS2_RC ifapi_calculate_pcr_digest(json_object *jso_event_list, const FAPI_QUOTE_INFO *quote_info, TPM2B_DIGEST *pcr_digest)
Definition: ifapi_helpers.c:2074
bool ifapi_cmp_public_key(TPM2B_PUBLIC *key1, TPM2B_PUBLIC *key2)
Definition: ifapi_helpers.c:2406
TSS2_RC ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template, const char *policy)
Definition: ifapi_helpers.c:146
void ifapi_free_object_list(NODE_OBJECT_T *node)
Definition: ifapi_helpers.c:668