tpm2-tss 4.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 <stdbool.h> // for bool
10#include <stddef.h> // for size_t
11#include <stdint.h> // for uint8_t
12
13#include "fapi_int.h" // for IFAPI_KEY_TEMPLATE, TSS2_KEY_TYPE
14#include "fapi_types.h" // for NODE_OBJECT_T
15#include "ifapi_keystore.h" // for IFAPI_OBJECT
16#include "ifapi_policy_types.h" // for TPMS_POLICY
17#include "ifapi_profiles.h" // for IFAPI_PROFILE
18#include "tss2_common.h" // for TSS2_RC, UINT32
19#include "tss2_esys.h" // for ESYS_TR, ESYS_CONTEXT
20#include "tss2_fapi.h" // for FAPI_CONTEXT
21#include "tss2_tpm2_types.h" // for TPM2_HANDLE, TPMA_SESSION, TPM2B_DIGEST
22
23TSS2_RC
24ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR session);
25
26TSS2_RC
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, TPMA_SESSION flags);
34
35const char *ifapi_get_object_path(IFAPI_OBJECT *object);
36
37TSS2_RC
38ifapi_set_auth(FAPI_CONTEXT *context, IFAPI_OBJECT *auth_object, const char *description);
39
40TSS2_RC
41ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle);
42
43TSS2_RC
44ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle, TPM2_HANDLE max);
45
46TSS2_RC
47ifapi_init_primary_async(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype);
48
49TSS2_RC
50ifapi_init_primary_finish(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype, IFAPI_OBJECT *hierarchy);
51
52TSS2_RC
54
55TSS2_RC
57
59
60TSS2_RC
62
64
65TSS2_RC
67 IFAPI_SESSION_TYPE session_flags,
68 TPMA_SESSION attribute_flags1,
69 TPMA_SESSION attribute_flags2);
70
71TSS2_RC
73 const IFAPI_PROFILE *profile,
74 TPMI_ALG_HASH hash_alg);
75
76TSS2_RC
78
79TSS2_RC
81
82TSS2_RC
83ifapi_load_key_async(FAPI_CONTEXT *context, size_t position);
84
85TSS2_RC
86ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath);
87
88TSS2_RC
89ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent);
90
91TSS2_RC
92ifapi_load_keys_async(FAPI_CONTEXT *context, char const *keyPath);
93
94TSS2_RC
96 bool flush_parent,
97 ESYS_TR *handle,
98 IFAPI_OBJECT **key_object);
99
100TSS2_RC
101ifapi_nv_read(FAPI_CONTEXT *context, uint8_t **data, size_t *size);
102
103TSS2_RC
105 char *nvPath,
106 size_t param_offset,
107 uint8_t const *data,
108 size_t size);
109
110TSS2_RC
111ifapi_get_random(FAPI_CONTEXT *context, size_t numBytes, uint8_t **data);
112
113TSS2_RC
114ifapi_load_key(FAPI_CONTEXT *context, char const *keyPath, IFAPI_OBJECT **key_object);
115
116TSS2_RC
117ifapi_key_sign(FAPI_CONTEXT *context,
118 IFAPI_OBJECT *sig_key_object,
119 char const *padding,
120 TPM2B_DIGEST *digest,
121 TPMT_TK_HASHCHECK *validation,
122 TPMT_SIGNATURE **tpm_signature,
123 char **publicKey,
124 char **certificate);
125
126TSS2_RC
127ifapi_authorize_object(FAPI_CONTEXT *context, IFAPI_OBJECT *object, ESYS_TR *session);
128
129TSS2_RC
130ifapi_get_json(FAPI_CONTEXT *context, IFAPI_OBJECT *object, char **json_string);
131
132TSS2_RC
133ifapi_key_create_prepare(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath);
134
135TSS2_RC
137 char const *keyPath,
138 char const *policyPath,
139 char const *authValue);
140
141TSS2_RC
143 char const *keyPath,
144 char const *policyPath,
145 size_t dataSize,
146 char const *authValue,
147 uint8_t const *data);
148
149TSS2_RC
151
152TSS2_RC
154 IFAPI_OBJECT *object,
155 char const *padding,
156 TPM2B_DIGEST *digest,
157 TPMT_SIG_SCHEME *sig_scheme);
158
159TSS2_RC
161 ESYS_TR handle,
162 IFAPI_OBJECT *hierarchy_object,
163 TPM2B_AUTH *newAuthValue);
164
165TSS2_RC
167 ESYS_TR handle,
168 IFAPI_OBJECT *hierarchy_object,
169 TPMS_POLICY *policy);
170
173
174void ifapi_free_objects(FAPI_CONTEXT *context);
175
176void ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object);
177
178TPM2_RC
180
181TPM2_RC
183 TPM2_CAP capability,
184 UINT32 count,
185 TPMS_CAPABILITY_DATA **capability_data);
186
187TSS2_RC
188ifapi_get_certificates(FAPI_CONTEXT *context,
189 UINT32 min_handle,
190 UINT32 max_handle,
191 uint8_t **certs,
192 size_t *cert_list_size);
193
194TSS2_RC
196
197TSS2_RC
199
200TSS2_RC
201ifapi_get_description(IFAPI_OBJECT *object, char **description);
202
203void ifapi_set_description(IFAPI_OBJECT *object, char *description);
204
205TSS2_RC
207 char const *key_path,
208 bool *is_primary,
209 bool *in_null_hierarchy);
210
211TSS2_RC
213
214TSS2_RC
215ifapi_create_nv_objects(FAPI_CONTEXT *fapi_ctx, IFAPI_CREATE_NV *ctx);
216
217TSS2_RC
218ifapi_check_existing_nv(FAPI_CONTEXT *context,
219 TPMI_RH_NV_INDEX nv_index,
220 bool *nv_exists,
221 ESYS_TR *esys_nv_handle,
222 TPM2B_NV_PUBLIC **nvPublic);
223
224#endif /* FAPI_UTIL_H */
uint32_t ESYS_TR
Definition tss2_esys.h:16
Definition esys_int.h:168
TPM2_RC ifapi_capability_init(FAPI_CONTEXT *context)
Definition fapi_util.c:4029
TSS2_RC ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle, TPM2_HANDLE max)
Definition fapi_util.c:458
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:1313
TSS2_RC ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent)
Definition fapi_util.c:1816
TSS2_RC ifapi_merge_profile_into_nv_template(FAPI_CONTEXT *context, IFAPI_NV_TEMPLATE *template)
Definition fapi_util.c:1456
void ifapi_primary_clean(FAPI_CONTEXT *context)
Definition fapi_util.c:1265
TSS2_RC ifapi_initialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
Definition fapi_util.c:3050
TSS2_RC ifapi_get_session_async(ESYS_CONTEXT *esys, ESYS_TR saltkey, const IFAPI_PROFILE *profile, TPMI_ALG_HASH hashAlg)
Definition fapi_util.c:86
void ifapi_free_objects(FAPI_CONTEXT *context)
Definition fapi_util.c:3986
TSS2_RC ifapi_get_json(FAPI_CONTEXT *context, IFAPI_OBJECT *object, char **json_string)
Definition fapi_util.c:2968
TSS2_RC ifapi_load_parent_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition fapi_util.c:1675
void ifapi_set_description(IFAPI_OBJECT *object, char *description)
Definition fapi_util.c:4449
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
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:3681
TSS2_RC ifapi_get_session_finish(ESYS_CONTEXT *esys, ESYS_TR *session, TPMA_SESSION flags)
Definition fapi_util.c:110
TSS2_RC ifapi_merge_profile_into_template(const IFAPI_PROFILE *profile, IFAPI_KEY_TEMPLATE *template)
Definition fapi_util.c:1492
TSS2_RC ifapi_key_create(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition fapi_util.c:3321
void ifapi_session_clean(FAPI_CONTEXT *context)
Definition fapi_util.c:1121
TSS2_RC ifapi_load_key(FAPI_CONTEXT *context, char const *keyPath, IFAPI_OBJECT **key_object)
Definition fapi_util.c:2756
TSS2_RC ifapi_get_key_properties(FAPI_CONTEXT *context, char const *key_path, bool *is_primary, bool *in_null_hierarchy)
Definition fapi_util.c:4489
TSS2_RC ifapi_cleanup_session(FAPI_CONTEXT *context)
Definition fapi_util.c:1197
TSS2_RC ifapi_load_keys_async(FAPI_CONTEXT *context, char const *keyPath)
Definition fapi_util.c:1630
TSS2_RC ifapi_load_key_async(FAPI_CONTEXT *context, size_t position)
Definition fapi_util.c:1768
TSS2_RC ifapi_key_create_prepare_auth(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath, char const *authValue)
Definition fapi_util.c:3120
TSS2_RC ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle)
Definition fapi_util.c:435
TSS2_RC ifapi_nv_read(FAPI_CONTEXT *context, uint8_t **data, size_t *size)
Definition fapi_util.c:2456
TSS2_RC ifapi_get_sessions_finish(FAPI_CONTEXT *context, const IFAPI_PROFILE *profile, TPMI_ALG_HASH hash_alg)
Definition fapi_util.c:1384
TSS2_RC ifapi_get_random(FAPI_CONTEXT *context, size_t numBytes, uint8_t **data)
Definition fapi_util.c:2656
TSS2_RC ifapi_set_auth(FAPI_CONTEXT *context, IFAPI_OBJECT *auth_object, const char *description)
Definition fapi_util.c:385
IFAPI_OBJECT * ifapi_allocate_object(FAPI_CONTEXT *context)
Definition fapi_util.c:3966
TSS2_RC ifapi_non_tpm_mode_init(FAPI_CONTEXT *context)
Definition fapi_util.c:1099
TSS2_RC ifapi_init_primary_async(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype)
Definition fapi_util.c:562
TPM2_RC ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability, UINT32 count, TPMS_CAPABILITY_DATA **capability_data)
Definition fapi_util.c:4057
TSS2_RC ifapi_key_create_prepare(FAPI_CONTEXT *context, char const *keyPath, char const *policyPath)
Definition fapi_util.c:3237
const char * ifapi_get_object_path(IFAPI_OBJECT *object)
Definition fapi_util.c:301
TSS2_RC ifapi_create_primary(FAPI_CONTEXT *context, IFAPI_KEY_TEMPLATE *template)
Definition fapi_util.c:4560
TSS2_RC ifapi_authorize_object(FAPI_CONTEXT *context, IFAPI_OBJECT *object, ESYS_TR *session)
Definition fapi_util.c:2060
TSS2_RC ifapi_session_init(FAPI_CONTEXT *context)
Definition fapi_util.c:1070
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:3174
TSS2_RC ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR session)
Definition fapi_util.c:44
TSS2_RC ifapi_esys_serialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
Definition fapi_util.c:2999
TSS2_RC ifapi_get_description(IFAPI_OBJECT *object, char **description)
Definition fapi_util.c:4404
TSS2_RC ifapi_change_policy_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPMS_POLICY *policy)
Definition fapi_util.c:3860
TSS2_RC ifapi_load_keys_finish(FAPI_CONTEXT *context, bool flush_parent, ESYS_TR *handle, IFAPI_OBJECT **key_object)
Definition fapi_util.c:1734
TSS2_RC ifapi_change_auth_hierarchy(FAPI_CONTEXT *context, ESYS_TR handle, IFAPI_OBJECT *hierarchy_object, TPM2B_AUTH *newAuthValue)
Definition fapi_util.c:3753
Definition fapi_int.h:1226
Definition fapi_int.h:306
Definition fapi_int.h:191
Definition fapi_int.h:204
Definition ifapi_keystore.h:153
Definition ifapi_profiles.h:19
Definition ifapi_policy_types.h:281