tpm2-tss  3.2.0
TPM Software stack 2.0 TCG spec compliant implementation
fapi_util.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 FAPI_UTIL_H
7 #define FAPI_UTIL_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 "util/aux_util.h"
17 #include "tss2_esys.h"
18 #include "tss2_fapi.h"
19 #include "fapi_int.h"
20 #include "ifapi_helpers.h"
21 
22 TSS2_RC
23 ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR session);
24 
25 TSS2_RC
27  ESYS_CONTEXT *esys,
28  ESYS_TR saltkey,
29  const IFAPI_PROFILE*profile,
30  TPMI_ALG_HASH hashAlg);
31 
32 TSS2_RC
34  TPMA_SESSION flags);
35 
36 const char *
38 
39 TSS2_RC
41  FAPI_CONTEXT *context,
42  IFAPI_OBJECT *auth_object,
43  const char *description);
44 
45 TSS2_RC
46 ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle);
47 
48 TSS2_RC
49 ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle,
50  TPM2_HANDLE max);
51 
52 TSS2_RC
54  FAPI_CONTEXT *context,
55  TSS2_KEY_TYPE ktype);
56 
57 TSS2_RC
58 ifapi_init_primary_finish(
59  FAPI_CONTEXT *context,
60  TSS2_KEY_TYPE ktype,
61  IFAPI_OBJECT *hierarchy);
62 
63 TSS2_RC
65 
66 TSS2_RC
68 
69 void
71 
72 TSS2_RC
74 
75 void
77 
78 TSS2_RC
80  FAPI_CONTEXT *context,
81  IFAPI_SESSION_TYPE session_flags,
82  TPMA_SESSION attribute_flags1,
83  TPMA_SESSION attribute_flags2);
84 
85 TSS2_RC
87  FAPI_CONTEXT *context,
88  const IFAPI_PROFILE *profile,
89  TPMI_ALG_HASH hash_alg);
90 
91 TSS2_RC
93  FAPI_CONTEXT *context,
94  IFAPI_NV_TEMPLATE *template);
95 
96 TSS2_RC
98  const IFAPI_PROFILE *profile,
99  IFAPI_KEY_TEMPLATE *template);
100 
101 TSS2_RC
102 ifapi_load_key_async(FAPI_CONTEXT *context, size_t position);
103 
104 TSS2_RC
105 ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath);
106 
107 TSS2_RC
108 ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent);
109 
110 TSS2_RC
112  FAPI_CONTEXT *context,
113  char const *keyPath);
114 
115 TSS2_RC
117  FAPI_CONTEXT *context,
118  bool flush_parent,
119  ESYS_TR *handle,
120  IFAPI_OBJECT **key_object);
121 
122 TSS2_RC
124  FAPI_CONTEXT *context,
125  uint8_t **data,
126  size_t *size);
127 
128 void
130  FAPI_CONTEXT *context,
131  ESYS_TR session,
132  TSS2_RC r);
133 
134 TSS2_RC
136  FAPI_CONTEXT *context,
137  char *nvPath,
138  size_t param_offset,
139  uint8_t const *data,
140  size_t size);
141 
142 TSS2_RC
144  FAPI_CONTEXT *context,
145  size_t numBytes,
146  uint8_t **data);
147 
148 TSS2_RC
150  FAPI_CONTEXT *context,
151  char const *keyPath,
152  IFAPI_OBJECT **key_object);
153 
154 TSS2_RC
156  FAPI_CONTEXT *context,
157  IFAPI_OBJECT *sig_key_object,
158  char const *padding,
159  TPM2B_DIGEST *digest,
160  TPMT_SIGNATURE **tpm_signature,
161  char **publicKey,
162  char **certificate);
163 
164 TSS2_RC
166  FAPI_CONTEXT *context,
167  IFAPI_OBJECT *object,
168  ESYS_TR *session);
169 
170 TSS2_RC
172  FAPI_CONTEXT *context,
173  IFAPI_OBJECT *object,
174  char **json_string);
175 
176 TSS2_RC
178  FAPI_CONTEXT *context,
179  char const *keyPath,
180  char const *policyPath);
181 
182 TSS2_RC
184  FAPI_CONTEXT *context,
185  char const *keyPath,
186  char const *policyPath,
187  char const *authValue);
188 
189 TSS2_RC
191  FAPI_CONTEXT *context,
192  char const *keyPath,
193  char const *policyPath,
194  size_t dataSize,
195  char const *authValue,
196  uint8_t const *data);
197 
198 TSS2_RC
200  FAPI_CONTEXT *context,
201  IFAPI_KEY_TEMPLATE *template);
202 
203 TSS2_RC
205  FAPI_CONTEXT *context,
206  IFAPI_OBJECT *object,
207  char const *padding,
208  TPM2B_DIGEST *digest,
209  TPMT_SIG_SCHEME *sig_scheme);
210 
211 TSS2_RC
213  FAPI_CONTEXT *context,
214  ESYS_TR handle,
215  IFAPI_OBJECT *hierarchy_object,
216  TPM2B_AUTH *newAuthValue);
217 
218 TSS2_RC
220  FAPI_CONTEXT *context,
221  ESYS_TR handle,
222  IFAPI_OBJECT *hierarchy_object,
223  TPMS_POLICY *policy);
224 
227 
228 void
230 
231 void
232 ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object);
233 
234 TPM2_RC
236 
237 TPM2_RC
238 ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability,
239  UINT32 count, TPMS_CAPABILITY_DATA **capability_data);
240 
241 TSS2_RC
243  FAPI_CONTEXT *context,
244  UINT32 min_handle,
245  UINT32 max_handle,
246  NODE_OBJECT_T **cert_list);
247 
248 TSS2_RC
250  ESYS_CONTEXT *ectx,
251  IFAPI_OBJECT *object);
252 
253 TSS2_RC
255  ESYS_CONTEXT *ectx,
256  IFAPI_OBJECT *object);
257 
258 TSS2_RC
259 ifapi_get_description(IFAPI_OBJECT *object, char **description);
260 
261 void
262 ifapi_set_description(IFAPI_OBJECT *object, char *description);
263 
264 TSS2_RC
266  FAPI_CONTEXT *context,
267  char const *key_path,
268  bool *is_primary,
269  bool *in_null_hierarchy);
270 
271 TSS2_RC
273 
274 #endif /* FAPI_UTIL_H */
TSS2_RC ifapi_get_sessions_finish(FAPI_CONTEXT *context, const IFAPI_PROFILE *profile, TPMI_ALG_HASH hash_alg)
Definition: fapi_util.c:1354
Definition: fapi_int.h:1120
TSS2_RC ifapi_key_create_prepare(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath)
Definition: fapi_util.c:3189
TSS2_RC ifapi_esys_serialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
Definition: fapi_util.c:2940
Definition: fapi_int.h:163
TSS2_RC ifapi_key_create_prepare_auth(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath, char const *authValue)
Definition: fapi_util.c:3067
void ifapi_session_clean(FAPI_CONTEXT *context)
Definition: fapi_util.c:1131
TSS2_RC ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle)
Definition: fapi_util.c:469
IFAPI_OBJECT * ifapi_allocate_object(FAPI_CONTEXT *context)
Definition: fapi_util.c:3932
TSS2_RC ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle, TPM2_HANDLE max)
Definition: fapi_util.c:494
void ifapi_primary_clean(FAPI_CONTEXT *context)
Definition: fapi_util.c:1235
TPM2_RC ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability, UINT32 count, TPMS_CAPABILITY_DATA **capability_data)
Definition: fapi_util.c:4052
TSS2_RC ifapi_authorize_object(FAPI_CONTEXT *context, IFAPI_OBJECT *object, ESYS_TR *session)
Definition: fapi_util.c:2067
TSS2_RC ifapi_get_certificates(FAPI_CONTEXT *context, UINT32 min_handle, UINT32 max_handle, NODE_OBJECT_T **cert_list)
Definition: fapi_util.c:4225
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)
Definition: fapi_util.c:3123
TSS2_RC ifapi_create_primary(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition: fapi_util.c:4543
TSS2_RC ifapi_get_json(FAPI_CONTEXT *context, IFAPI_OBJECT *object, char **json_string)
Definition: fapi_util.c:2906
Definition: ifapi_keystore.h:143
void ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object)
Definition: fapi_util.c:3972
Definition: fapi_types.h:34
TSS2_RC ifapi_nv_read(FAPI_CONTEXT *context, uint8_t **data, size_t *size)
Definition: fapi_util.c:2447
void ifapi_flush_policy_session(FAPI_CONTEXT *context, ESYS_TR session, TSS2_RC r)
Definition: fapi_util.c:2031
Definition: esys_int.h:154
TSS2_RC ifapi_load_key(FAPI_CONTEXT *context, char const *keyPath, IFAPI_OBJECT **key_object)
Definition: fapi_util.c:2692
const char * ifapi_get_object_path(IFAPI_OBJECT *object)
Definition: fapi_util.c:343
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)
Definition: fapi_util.c:2788
TSS2_RC ifapi_load_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition: fapi_util.c:1601
TSS2_RC ifapi_change_policy_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPMS_POLICY *policy)
Definition: fapi_util.c:3819
TSS2_RC ifapi_init_primary_async(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype)
Definition: fapi_util.c:605
TPM2_RC ifapi_capability_init(FAPI_CONTEXT *context)
Definition: fapi_util.c:4021
TSS2_RC ifapi_merge_profile_into_template(const IFAPI_PROFILE *profile, IFAPI_KEY_TEMPLATE *template)
Definition: fapi_util.c:1469
TSS2_RC ifapi_nv_write(FAPI_CONTEXT *context, char *nvPath, size_t param_offset, uint8_t const *data, size_t size)
Definition: fapi_util.c:2193
Definition: ifapi_policy_types.h:291
uint32_t ESYS_TR
Definition: tss2_esys.h:16
void ifapi_free_objects(FAPI_CONTEXT *context)
Definition: fapi_util.c:3953
TSS2_RC ifapi_get_key_properties(FAPI_CONTEXT *context, char const *key_path, bool *is_primary, bool *in_null_hierarchy)
Definition: fapi_util.c:4469
TSS2_RC ifapi_session_init(FAPI_CONTEXT *context)
Definition: fapi_util.c:1076
void ifapi_set_description(IFAPI_OBJECT *object, char *description)
Definition: fapi_util.c:4428
Definition: fapi_int.h:173
TSS2_RC ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition: fapi_util.c:1647
TSS2_RC ifapi_load_keys_finish(FAPI_CONTEXT *context, bool flush_parent, ESYS_TR *handle, IFAPI_OBJECT **key_object)
Definition: fapi_util.c:1707
TSS2_RC ifapi_get_session_finish(ESYS_CONTEXT *esys, ESYS_TR *session, TPMA_SESSION flags)
Definition: fapi_util.c:117
TSS2_RC ifapi_load_key_async(FAPI_CONTEXT *context, size_t position)
Definition: fapi_util.c:1744
TSS2_RC ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR session)
Definition: fapi_util.c:48
TSS2_RC ifapi_get_random(FAPI_CONTEXT *context, size_t numBytes, uint8_t **data)
Definition: fapi_util.c:2587
TSS2_RC ifapi_set_auth(FAPI_CONTEXT *context, IFAPI_OBJECT *auth_object, const char *description)
Definition: fapi_util.c:425
TSS2_RC ifapi_change_auth_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPM2B_AUTH *newAuthValue)
Definition: fapi_util.c:3706
TSS2_RC ifapi_non_tpm_mode_init(FAPI_CONTEXT *context)
Definition: fapi_util.c:1107
Definition: ifapi_profiles.h:15
TSS2_RC ifapi_get_description(IFAPI_OBJECT *object, char **description)
Definition: fapi_util.c:4384
TSS2_RC ifapi_get_session_async(ESYS_CONTEXT *esys, ESYS_TR saltkey, const IFAPI_PROFILE *profile, TPMI_ALG_HASH hashAlg)
Definition: fapi_util.c:91
TSS2_RC ifapi_initialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
Definition: fapi_util.c:2994
size_t size
Definition: fapi_types.h:36
TSS2_RC ifapi_get_sig_scheme(FAPI_CONTEXT *context, IFAPI_OBJECT *object, char const *padding, TPM2B_DIGEST *digest, TPMT_SIG_SCHEME *sig_scheme)
Definition: fapi_util.c:3632
TSS2_RC ifapi_cleanup_session(FAPI_CONTEXT *context)
Definition: fapi_util.c:1171
TSS2_RC ifapi_get_sessions_async(FAPI_CONTEXT *context, IFAPI_SESSION_TYPE session_flags, TPMA_SESSION attribute_flags1, TPMA_SESSION attribute_flags2)
Definition: fapi_util.c:1284
TSS2_RC ifapi_key_create(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition: fapi_util.c:3277
TSS2_RC ifapi_merge_profile_into_nv_template(FAPI_CONTEXT *context, IFAPI_NV_TEMPLATE *template)
Definition: fapi_util.c:1430
TSS2_RC ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent)
Definition: fapi_util.c:1793