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
27 ESYS_CONTEXT *esys,
28 ESYS_TR saltkey,
29 const IFAPI_PROFILE*profile,
30 TPMI_ALG_HASH hashAlg);
31
32TSS2_RC
34 TPMA_SESSION flags);
35
36const char *
38
39TSS2_RC
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
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
65
66TSS2_RC
68
69void
71
72TSS2_RC
74
75void
77
78TSS2_RC
80 FAPI_CONTEXT *context,
81 IFAPI_SESSION_TYPE session_flags,
82 TPMA_SESSION attribute_flags1,
83 TPMA_SESSION attribute_flags2);
84
85TSS2_RC
87 FAPI_CONTEXT *context,
88 const IFAPI_PROFILE *profile,
89 TPMI_ALG_HASH hash_alg);
90
91TSS2_RC
93 FAPI_CONTEXT *context,
94 IFAPI_NV_TEMPLATE *template);
95
96TSS2_RC
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
112 FAPI_CONTEXT *context,
113 char const *keyPath);
114
115TSS2_RC
117 FAPI_CONTEXT *context,
118 bool flush_parent,
119 ESYS_TR *handle,
120 IFAPI_OBJECT **key_object);
121
122TSS2_RC
124 FAPI_CONTEXT *context,
125 uint8_t **data,
126 size_t *size);
127
128TSS2_RC
130 FAPI_CONTEXT *context,
131 char *nvPath,
132 size_t param_offset,
133 uint8_t const *data,
134 size_t size);
135
136TSS2_RC
138 FAPI_CONTEXT *context,
139 size_t numBytes,
140 uint8_t **data);
141
142TSS2_RC
144 FAPI_CONTEXT *context,
145 char const *keyPath,
146 IFAPI_OBJECT **key_object);
147
148TSS2_RC
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
160 FAPI_CONTEXT *context,
161 IFAPI_OBJECT *object,
162 ESYS_TR *session);
163
164TSS2_RC
166 FAPI_CONTEXT *context,
167 IFAPI_OBJECT *object,
168 char **json_string);
169
170TSS2_RC
172 FAPI_CONTEXT *context,
173 char const *keyPath,
174 char const *policyPath);
175
176TSS2_RC
178 FAPI_CONTEXT *context,
179 char const *keyPath,
180 char const *policyPath,
181 char const *authValue);
182
183TSS2_RC
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
194 FAPI_CONTEXT *context,
195 IFAPI_KEY_TEMPLATE *template);
196
197TSS2_RC
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
207 FAPI_CONTEXT *context,
208 ESYS_TR handle,
209 IFAPI_OBJECT *hierarchy_object,
210 TPM2B_AUTH *newAuthValue);
211
212TSS2_RC
214 FAPI_CONTEXT *context,
215 ESYS_TR handle,
216 IFAPI_OBJECT *hierarchy_object,
217 TPMS_POLICY *policy);
218
221
222void
224
225void
226ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object);
227
228TPM2_RC
230
231TPM2_RC
232ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability,
233 UINT32 count, TPMS_CAPABILITY_DATA **capability_data);
234
235TSS2_RC
237 FAPI_CONTEXT *context,
238 UINT32 min_handle,
239 UINT32 max_handle,
240 NODE_OBJECT_T **cert_list);
241
242TSS2_RC
244 ESYS_CONTEXT *ectx,
245 IFAPI_OBJECT *object);
246
247TSS2_RC
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
260 FAPI_CONTEXT *context,
261 char const *key_path,
262 bool *is_primary,
263 bool *in_null_hierarchy);
264
265TSS2_RC
267
268#endif /* FAPI_UTIL_H */
uint32_t ESYS_TR
Definition tss2_esys.h:16
Definition esys_int.h:162
TPM2_RC ifapi_capability_init(FAPI_CONTEXT *context)
Definition fapi_util.c:4197
TSS2_RC ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle, TPM2_HANDLE max)
Definition fapi_util.c:497
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:1398
TSS2_RC ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent)
Definition fapi_util.c:1910
TSS2_RC ifapi_merge_profile_into_nv_template(FAPI_CONTEXT *context, IFAPI_NV_TEMPLATE *template)
Definition fapi_util.c:1547
void ifapi_primary_clean(FAPI_CONTEXT *context)
Definition fapi_util.c:1349
TSS2_RC ifapi_initialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
Definition fapi_util.c:3176
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_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:2968
void ifapi_free_objects(FAPI_CONTEXT *context)
Definition fapi_util.c:4155
TSS2_RC ifapi_get_json(FAPI_CONTEXT *context, IFAPI_OBJECT *object, char **json_string)
Definition fapi_util.c:3088
TSS2_RC ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition fapi_util.c:1764
void ifapi_set_description(IFAPI_OBJECT *object, char *description)
Definition fapi_util.c:4604
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:2295
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:3831
TSS2_RC ifapi_get_session_finish(ESYS_CONTEXT *esys, ESYS_TR *session, TPMA_SESSION flags)
Definition fapi_util.c:117
TSS2_RC ifapi_merge_profile_into_template(const IFAPI_PROFILE *profile, IFAPI_KEY_TEMPLATE *template)
Definition fapi_util.c:1586
TSS2_RC ifapi_key_create(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition fapi_util.c:3459
void ifapi_session_clean(FAPI_CONTEXT *context)
Definition fapi_util.c:1202
TSS2_RC ifapi_load_key(FAPI_CONTEXT *context, char const *keyPath, IFAPI_OBJECT **key_object)
Definition fapi_util.c:2862
TSS2_RC ifapi_get_key_properties(FAPI_CONTEXT *context, char const *key_path, bool *is_primary, bool *in_null_hierarchy)
Definition fapi_util.c:4645
TSS2_RC ifapi_get_certificates(FAPI_CONTEXT *context, UINT32 min_handle, UINT32 max_handle, NODE_OBJECT_T **cert_list)
Definition fapi_util.c:4399
TSS2_RC ifapi_cleanup_session(FAPI_CONTEXT *context)
Definition fapi_util.c:1280
TSS2_RC ifapi_load_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition fapi_util.c:1718
TSS2_RC ifapi_load_key_async(FAPI_CONTEXT *context, size_t position)
Definition fapi_util.c:1861
TSS2_RC ifapi_key_create_prepare_auth(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath, char const *authValue)
Definition fapi_util.c:3249
TSS2_RC ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle)
Definition fapi_util.c:472
TSS2_RC ifapi_nv_read(FAPI_CONTEXT *context, uint8_t **data, size_t *size)
Definition fapi_util.c:2560
TSS2_RC ifapi_get_sessions_finish(FAPI_CONTEXT *context, const IFAPI_PROFILE *profile, TPMI_ALG_HASH hash_alg)
Definition fapi_util.c:1471
TSS2_RC ifapi_get_random(FAPI_CONTEXT *context, size_t numBytes, uint8_t **data)
Definition fapi_util.c:2757
TSS2_RC ifapi_set_auth(FAPI_CONTEXT *context, IFAPI_OBJECT *auth_object, const char *description)
Definition fapi_util.c:424
IFAPI_OBJECT * ifapi_allocate_object(FAPI_CONTEXT *context)
Definition fapi_util.c:4134
TSS2_RC ifapi_non_tpm_mode_init(FAPI_CONTEXT *context)
Definition fapi_util.c:1179
TSS2_RC ifapi_init_primary_async(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype)
Definition fapi_util.c:608
TPM2_RC ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability, UINT32 count, TPMS_CAPABILITY_DATA **capability_data)
Definition fapi_util.c:4228
TSS2_RC ifapi_key_create_prepare(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath)
Definition fapi_util.c:3371
const char * ifapi_get_object_path(IFAPI_OBJECT *object)
Definition fapi_util.c:342
TSS2_RC ifapi_create_primary(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition fapi_util.c:4719
TSS2_RC ifapi_authorize_object(FAPI_CONTEXT *context, IFAPI_OBJECT *object, ESYS_TR *session)
Definition fapi_util.c:2160
TSS2_RC ifapi_session_init(FAPI_CONTEXT *context)
Definition fapi_util.c:1149
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:3305
TSS2_RC ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR session)
Definition fapi_util.c:48
TSS2_RC ifapi_esys_serialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
Definition fapi_util.c:3122
TSS2_RC ifapi_get_description(IFAPI_OBJECT *object, char **description)
Definition fapi_util.c:4558
TSS2_RC ifapi_change_policy_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPMS_POLICY *policy)
Definition fapi_util.c:4020
TSS2_RC ifapi_load_keys_finish(FAPI_CONTEXT *context, bool flush_parent, ESYS_TR *handle, IFAPI_OBJECT **key_object)
Definition fapi_util.c:1824
TSS2_RC ifapi_change_auth_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPM2B_AUTH *newAuthValue)
Definition fapi_util.c:3905
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