tpm2-tss 4.0.1
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
128void
130 FAPI_CONTEXT *context,
131 ESYS_TR session,
132 TSS2_RC r);
133
134TSS2_RC
136 FAPI_CONTEXT *context,
137 char *nvPath,
138 size_t param_offset,
139 uint8_t const *data,
140 size_t size);
141
142TSS2_RC
144 FAPI_CONTEXT *context,
145 size_t numBytes,
146 uint8_t **data);
147
148TSS2_RC
150 FAPI_CONTEXT *context,
151 char const *keyPath,
152 IFAPI_OBJECT **key_object);
153
154TSS2_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
164TSS2_RC
166 FAPI_CONTEXT *context,
167 IFAPI_OBJECT *object,
168 ESYS_TR *session);
169
170TSS2_RC
172 FAPI_CONTEXT *context,
173 IFAPI_OBJECT *object,
174 char **json_string);
175
176TSS2_RC
178 FAPI_CONTEXT *context,
179 char const *keyPath,
180 char const *policyPath);
181
182TSS2_RC
184 FAPI_CONTEXT *context,
185 char const *keyPath,
186 char const *policyPath,
187 char const *authValue);
188
189TSS2_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
198TSS2_RC
200 FAPI_CONTEXT *context,
201 IFAPI_KEY_TEMPLATE *template);
202
203TSS2_RC
205 FAPI_CONTEXT *context,
206 IFAPI_OBJECT *object,
207 char const *padding,
208 TPM2B_DIGEST *digest,
209 TPMT_SIG_SCHEME *sig_scheme);
210
211TSS2_RC
213 FAPI_CONTEXT *context,
214 ESYS_TR handle,
215 IFAPI_OBJECT *hierarchy_object,
216 TPM2B_AUTH *newAuthValue);
217
218TSS2_RC
220 FAPI_CONTEXT *context,
221 ESYS_TR handle,
222 IFAPI_OBJECT *hierarchy_object,
223 TPMS_POLICY *policy);
224
227
228void
230
231void
233
234TPM2_RC
236
237TPM2_RC
238ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability,
239 UINT32 count, TPMS_CAPABILITY_DATA **capability_data);
240
241TSS2_RC
243 FAPI_CONTEXT *context,
244 UINT32 min_handle,
245 UINT32 max_handle,
246 NODE_OBJECT_T **cert_list);
247
248TSS2_RC
250 ESYS_CONTEXT *ectx,
251 IFAPI_OBJECT *object);
252
253TSS2_RC
255 ESYS_CONTEXT *ectx,
256 IFAPI_OBJECT *object);
257
258TSS2_RC
259ifapi_get_description(IFAPI_OBJECT *object, char **description);
260
261void
262ifapi_set_description(IFAPI_OBJECT *object, char *description);
263
264TSS2_RC
266 FAPI_CONTEXT *context,
267 char const *key_path,
268 bool *is_primary,
269 bool *in_null_hierarchy);
270
271TSS2_RC
273
274#endif /* FAPI_UTIL_H */
uint32_t ESYS_TR
Definition: tss2_esys.h:16
Definition: esys_int.h:161
TPM2_RC ifapi_capability_init(FAPI_CONTEXT *context)
Definition: fapi_util.c:4168
void ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object)
Definition: fapi_util.c:4119
TSS2_RC ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle, TPM2_HANDLE max)
Definition: fapi_util.c:494
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:1345
TSS2_RC ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent)
Definition: fapi_util.c:1854
TSS2_RC ifapi_merge_profile_into_nv_template(FAPI_CONTEXT *context, IFAPI_NV_TEMPLATE *template)
Definition: fapi_util.c:1491
void ifapi_primary_clean(FAPI_CONTEXT *context)
Definition: fapi_util.c:1296
TSS2_RC ifapi_initialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
Definition: fapi_util.c:3132
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:2925
void ifapi_free_objects(FAPI_CONTEXT *context)
Definition: fapi_util.c:4100
TSS2_RC ifapi_get_json(FAPI_CONTEXT *context, IFAPI_OBJECT *object, char **json_string)
Definition: fapi_util.c:3044
IFAPI_OBJECT * ifapi_allocate_object(FAPI_CONTEXT *context)
Definition: fapi_util.c:4079
void ifapi_flush_policy_session(FAPI_CONTEXT *context, ESYS_TR session, TSS2_RC r)
Definition: fapi_util.c:2092
void ifapi_set_description(IFAPI_OBJECT *object, char *description)
Definition: fapi_util.c:4575
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:2254
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:3779
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:1530
TSS2_RC ifapi_key_create(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition: fapi_util.c:3415
void ifapi_session_clean(FAPI_CONTEXT *context)
Definition: fapi_util.c:1192
TSS2_RC ifapi_load_key(FAPI_CONTEXT *context, char const *keyPath, IFAPI_OBJECT **key_object)
Definition: fapi_util.c:2820
TSS2_RC ifapi_get_certificates(FAPI_CONTEXT *context, UINT32 min_handle, UINT32 max_handle, NODE_OBJECT_T **cert_list)
Definition: fapi_util.c:4370
TSS2_RC ifapi_cleanup_session(FAPI_CONTEXT *context)
Definition: fapi_util.c:1232
TSS2_RC ifapi_load_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition: fapi_util.c:1662
TSS2_RC ifapi_load_key_async(FAPI_CONTEXT *context, size_t position)
Definition: fapi_util.c:1805
TSS2_RC ifapi_key_create_prepare_auth(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath, char const *authValue)
Definition: fapi_util.c:3205
TSS2_RC ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle)
Definition: fapi_util.c:469
TSS2_RC ifapi_nv_read(FAPI_CONTEXT *context, uint8_t **data, size_t *size)
Definition: fapi_util.c:2519
TSS2_RC ifapi_get_sessions_finish(FAPI_CONTEXT *context, const IFAPI_PROFILE *profile, TPMI_ALG_HASH hash_alg)
Definition: fapi_util.c:1415
TSS2_RC ifapi_create_primary(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition: fapi_util.c:4690
const char * ifapi_get_object_path(IFAPI_OBJECT *object)
Definition: fapi_util.c:343
TSS2_RC ifapi_get_random(FAPI_CONTEXT *context, size_t numBytes, uint8_t **data)
Definition: fapi_util.c:2715
TSS2_RC ifapi_set_auth(FAPI_CONTEXT *context, IFAPI_OBJECT *auth_object, const char *description)
Definition: fapi_util.c:425
TSS2_RC ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition: fapi_util.c:1708
TSS2_RC ifapi_non_tpm_mode_init(FAPI_CONTEXT *context)
Definition: fapi_util.c:1168
TSS2_RC ifapi_init_primary_async(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype)
Definition: fapi_util.c:605
TPM2_RC ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability, UINT32 count, TPMS_CAPABILITY_DATA **capability_data)
Definition: fapi_util.c:4199
TSS2_RC ifapi_key_create_prepare(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath)
Definition: fapi_util.c:3327
TSS2_RC ifapi_authorize_object(FAPI_CONTEXT *context, IFAPI_OBJECT *object, ESYS_TR *session)
Definition: fapi_util.c:2128
TSS2_RC ifapi_session_init(FAPI_CONTEXT *context)
Definition: fapi_util.c:1137
TSS2_RC ifapi_get_key_properties(FAPI_CONTEXT *context, char const *key_path, bool *is_primary, bool *in_null_hierarchy)
Definition: fapi_util.c:4616
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:3261
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:3078
TSS2_RC ifapi_get_description(IFAPI_OBJECT *object, char **description)
Definition: fapi_util.c:4529
TSS2_RC ifapi_change_policy_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPMS_POLICY *policy)
Definition: fapi_util.c:3966
TSS2_RC ifapi_load_keys_finish(FAPI_CONTEXT *context, bool flush_parent, ESYS_TR *handle, IFAPI_OBJECT **key_object)
Definition: fapi_util.c:1768
TSS2_RC ifapi_change_auth_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPM2B_AUTH *newAuthValue)
Definition: fapi_util.c:3853
Definition: ifapi_keystore.h:150
Definition: fapi_int.h:1157
Definition: fapi_int.h:170
Definition: fapi_int.h:180
Definition: ifapi_profiles.h:15
Definition: ifapi_policy_types.h:275
Definition: fapi_types.h:34