tpm2-tss 4.1.3
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
22TSS2_RC
23ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR session);
24
25TSS2_RC
26ifapi_get_session_async(
27 ESYS_CONTEXT *esys,
28 ESYS_TR saltkey,
29 const IFAPI_PROFILE*profile,
30 TPMI_ALG_HASH hashAlg);
31
32TSS2_RC
33ifapi_get_session_finish(ESYS_CONTEXT *esys, ESYS_TR *session,
34 TPMA_SESSION flags);
35
36const char *
37ifapi_get_object_path(IFAPI_OBJECT *object);
38
39TSS2_RC
40ifapi_set_auth(
41 FAPI_CONTEXT *context,
42 IFAPI_OBJECT *auth_object,
43 const char *description);
44
45TSS2_RC
46ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle);
47
48TSS2_RC
49ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle,
50 TPM2_HANDLE max);
51
52TSS2_RC
53ifapi_init_primary_async(
54 FAPI_CONTEXT *context,
55 TSS2_KEY_TYPE ktype);
56
57TSS2_RC
58ifapi_init_primary_finish(
59 FAPI_CONTEXT *context,
60 TSS2_KEY_TYPE ktype,
61 IFAPI_OBJECT *hierarchy);
62
63TSS2_RC
64ifapi_session_init(FAPI_CONTEXT *context);
65
66TSS2_RC
67ifapi_non_tpm_mode_init(FAPI_CONTEXT *context);
68
69void
70ifapi_session_clean(FAPI_CONTEXT *context);
71
72TSS2_RC
73ifapi_cleanup_session(FAPI_CONTEXT *context);
74
75void
76ifapi_primary_clean(FAPI_CONTEXT *context);
77
78TSS2_RC
79ifapi_get_sessions_async(
80 FAPI_CONTEXT *context,
81 IFAPI_SESSION_TYPE session_flags,
82 TPMA_SESSION attribute_flags1,
83 TPMA_SESSION attribute_flags2);
84
85TSS2_RC
86ifapi_get_sessions_finish(
87 FAPI_CONTEXT *context,
88 const IFAPI_PROFILE *profile,
89 TPMI_ALG_HASH hash_alg);
90
91TSS2_RC
92ifapi_merge_profile_into_nv_template(
93 FAPI_CONTEXT *context,
94 IFAPI_NV_TEMPLATE *template);
95
96TSS2_RC
97ifapi_merge_profile_into_template(
98 const IFAPI_PROFILE *profile,
99 IFAPI_KEY_TEMPLATE *template);
100
101TSS2_RC
102ifapi_load_key_async(FAPI_CONTEXT *context, size_t position);
103
104TSS2_RC
105ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath);
106
107TSS2_RC
108ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent);
109
110TSS2_RC
111ifapi_load_keys_async(
112 FAPI_CONTEXT *context,
113 char const *keyPath);
114
115TSS2_RC
116ifapi_load_keys_finish(
117 FAPI_CONTEXT *context,
118 bool flush_parent,
119 ESYS_TR *handle,
120 IFAPI_OBJECT **key_object);
121
122TSS2_RC
123ifapi_nv_read(
124 FAPI_CONTEXT *context,
125 uint8_t **data,
126 size_t *size);
127
128TSS2_RC
129ifapi_nv_write(
130 FAPI_CONTEXT *context,
131 char *nvPath,
132 size_t param_offset,
133 uint8_t const *data,
134 size_t size);
135
136TSS2_RC
137ifapi_get_random(
138 FAPI_CONTEXT *context,
139 size_t numBytes,
140 uint8_t **data);
141
142TSS2_RC
143ifapi_load_key(
144 FAPI_CONTEXT *context,
145 char const *keyPath,
146 IFAPI_OBJECT **key_object);
147
148TSS2_RC
149ifapi_key_sign(
150 FAPI_CONTEXT *context,
151 IFAPI_OBJECT *sig_key_object,
152 char const *padding,
153 TPM2B_DIGEST *digest,
154 TPMT_SIGNATURE **tpm_signature,
155 char **publicKey,
156 char **certificate);
157
158TSS2_RC
159ifapi_authorize_object(
160 FAPI_CONTEXT *context,
161 IFAPI_OBJECT *object,
162 ESYS_TR *session);
163
164TSS2_RC
165ifapi_get_json(
166 FAPI_CONTEXT *context,
167 IFAPI_OBJECT *object,
168 char **json_string);
169
170TSS2_RC
171ifapi_key_create_prepare(
172 FAPI_CONTEXT *context,
173 char const *keyPath,
174 char const *policyPath);
175
176TSS2_RC
177ifapi_key_create_prepare_auth(
178 FAPI_CONTEXT *context,
179 char const *keyPath,
180 char const *policyPath,
181 char const *authValue);
182
183TSS2_RC
184ifapi_key_create_prepare_sensitive(
185 FAPI_CONTEXT *context,
186 char const *keyPath,
187 char const *policyPath,
188 size_t dataSize,
189 char const *authValue,
190 uint8_t const *data);
191
192TSS2_RC
193ifapi_key_create(
194 FAPI_CONTEXT *context,
195 IFAPI_KEY_TEMPLATE *template);
196
197TSS2_RC
198ifapi_get_sig_scheme(
199 FAPI_CONTEXT *context,
200 IFAPI_OBJECT *object,
201 char const *padding,
202 TPM2B_DIGEST *digest,
203 TPMT_SIG_SCHEME *sig_scheme);
204
205TSS2_RC
206ifapi_change_auth_hierarchy(
207 FAPI_CONTEXT *context,
208 ESYS_TR handle,
209 IFAPI_OBJECT *hierarchy_object,
210 TPM2B_AUTH *newAuthValue);
211
212TSS2_RC
213ifapi_change_policy_hierarchy(
214 FAPI_CONTEXT *context,
215 ESYS_TR handle,
216 IFAPI_OBJECT *hierarchy_object,
217 TPMS_POLICY *policy);
218
220*ifapi_allocate_object(FAPI_CONTEXT *context);
221
222void
223ifapi_free_objects(FAPI_CONTEXT *context);
224
225void
226ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object);
227
228TPM2_RC
229ifapi_capability_init(FAPI_CONTEXT *context);
230
231TPM2_RC
232ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability,
233 UINT32 count, TPMS_CAPABILITY_DATA **capability_data);
234
235TSS2_RC
236ifapi_get_certificates(
237 FAPI_CONTEXT *context,
238 UINT32 min_handle,
239 UINT32 max_handle,
240 NODE_OBJECT_T **cert_list);
241
242TSS2_RC
243ifapi_initialize_object(
244 ESYS_CONTEXT *ectx,
245 IFAPI_OBJECT *object);
246
247TSS2_RC
248ifapi_esys_serialize_object(
249 ESYS_CONTEXT *ectx,
250 IFAPI_OBJECT *object);
251
252TSS2_RC
253ifapi_get_description(IFAPI_OBJECT *object, char **description);
254
255void
256ifapi_set_description(IFAPI_OBJECT *object, char *description);
257
258TSS2_RC
259ifapi_get_key_properties(
260 FAPI_CONTEXT *context,
261 char const *key_path,
262 bool *is_primary,
263 bool *in_null_hierarchy);
264
265TSS2_RC
266ifapi_create_primary(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template);
267
268#endif /* FAPI_UTIL_H */
Definition esys_int.h:162
Definition ifapi_keystore.h:150
Definition fapi_int.h:1164
Definition fapi_int.h:178
Definition fapi_int.h:188
Definition ifapi_profiles.h:15
Definition ifapi_policy_types.h:275
Definition fapi_types.h:34