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