tpm2-tss 4.0.1
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_helpers.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 IFAPI_HELPERS_H
7#define IFAPI_HELPERS_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
20TSS2_RC
21ifapi_create_dirs(const char *supdir, const char *path);
22
23TSS2_RC
24ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template);
25
26TSS2_RC
27ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template,
28 const char *policy);
29
30bool
31ifapi_path_type_p(const char *path, const char *type);
32
34ifapi_get_hierary_handle(const char *path);
35
36bool
37ifapi_null_primary_p(const char *path);
38
39bool
40ifapi_hierarchy_path_p(const char *path);
41
42bool
43ifapi_TPMT_PUBLIC_cmp(TPMT_PUBLIC *in1, TPMT_PUBLIC *in2);
44
45void
47 IFAPI_OBJECT *hierarchy,
48 ESYS_TR esys_handle);
49
50TSS2_RC
51ifapi_set_name_hierarchy_object(
52 IFAPI_OBJECT *hierarchy);
53
54char *
55get_description(IFAPI_OBJECT *object);
56
57size_t
59
60void
62
63void
65
66TSS2_RC
67ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name);
68
69TSS2_RC
71 char **dest,
72 const char *supdir,
73 NODE_STR_T *node,
74 char *name,
75 size_t n);
76
77TSS2_RC
78ifapi_asprintf(char **str, const char *fmt, ...);
79
81split_string(const char *string, char *delimiter);
82
84init_string_list(const char *string);
85
86bool
87add_string_to_list(NODE_STR_T *str_list, char *string);
88
89void
91
92void
94 TPMS_POLICY *policy);
95
98 const TPMS_POLICY *from_policy);
99
100TSS2_RC
102 TPMT_PUBLIC *publicInfo,
103 TPM2B_NAME *name);
104
105TSS2_RC
106ifapi_nv_get_name(
107 TPMS_NV_PUBLIC *publicInfo,
108 TPM2B_NAME *name);
109
110TSS2_RC
112 IFAPI_OBJECT *object,
113 void *name,
114 bool *equal);
115
116TSS2_RC
118 IFAPI_OBJECT *object,
119 void *nv_public,
120 bool *equal);
121
122TSS2_RC
124 IFAPI_OBJECT *sig_key_object,
125 TPMT_SIGNATURE *tpm_signature,
126 uint8_t **signature,
127 size_t *signatureSize);
128
129TSS2_RC
131 IFAPI_OBJECT *sig_key_object,
132 TPM2B_ATTEST *tpm_quoted,
133 char **quoteInfo);
134
135TSS2_RC
137 char const *quoteInfo,
138 TPM2B_ATTEST *tpm_quoted,
139 FAPI_QUOTE_INFO *fapi_quote_ingo);
140
141TSS2_RC
142push_object_to_list(void *object, NODE_OBJECT_T **object_list);
143
144TSS2_RC
145append_object_to_list(void *object, NODE_OBJECT_T **object_list);
146
147bool
149
150TSS2_RC
151ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index);
152
153TSS2_RC
154ifapi_check_nv_index(const char *path, TPM2_HANDLE nv_index);
155
156TSS2_RC
158 const TPML_PCR_SELECTION *pcr_profile,
159 const TPML_PCR_SELECTION *pcr_capablity);
160
161TSS2_RC
163 TPML_PCR_SELECTION *pcr_selection,
164 const TPM2_HANDLE *pcr_index,
165 size_t pcr_count);
166
168 json_object *jso_event_list,
169 const FAPI_QUOTE_INFO *quote_info,
170 TPM2B_DIGEST *pcr_digest);
171
172TSS2_RC
174 TPML_PCRVALUES *pcrs,
175 TPML_PCR_SELECTION *pcr_selection,
176 TPMI_ALG_HASH hash_alg,
177 TPM2B_DIGEST *pcr_digest);
178
179bool
181 TPM2B_PUBLIC *key1,
182 TPM2B_PUBLIC *key2);
183
184void
185ifapi_check_json_object_fields(
186 json_object *jso,
187 char** field_tab,
188 size_t size_of_tab);
189
190TSS2_RC
191ifapi_extend_pcr(
192 TPMI_ALG_HASH alg,
193 uint8_t *pcr,
194 const uint8_t *digest,
195 size_t alg_size);
196
197TSS2_RC ifapi_pcr_selection_to_pcrvalues(
198 TPML_PCR_SELECTION *pcr_selection,
199 TPML_DIGEST *pcr_digests,
200 TPML_PCRVALUES **out);
201
202void
203ifapi_helper_init_policy_pcr_selections(
204 TSS2_POLICY_PCR_SELECTION *s,
205 TPMT_POLICYELEMENT *pol_element);
206
207#endif /* IFAPI_HELPERS_H */
uint32_t ESYS_TR
Definition: tss2_esys.h:16
bool ifapi_TPMT_PUBLIC_cmp(TPMT_PUBLIC *in1, TPMT_PUBLIC *in2)
Definition: ifapi_helpers.c:506
TSS2_RC ifapi_get_name(TPMT_PUBLIC *publicInfo, TPM2B_NAME *name)
Definition: ifapi_helpers.c:1469
NODE_STR_T * split_string(const char *string, char *delimiter)
Definition: ifapi_helpers.c:581
TSS2_RC push_object_to_list(void *object, NODE_OBJECT_T **object_list)
Definition: ifapi_helpers.c:890
bool add_string_to_list(NODE_STR_T *str_list, char *string)
Definition: ifapi_helpers.c:863
TPMS_POLICY * ifapi_copy_policy(const TPMS_POLICY *from_policy)
Definition: ifapi_helpers.c:1435
bool ifapi_null_primary_p(const char *path)
Definition: ifapi_helpers.c:303
TSS2_RC ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template, const char *policy)
Definition: ifapi_helpers.c:148
TSS2_RC ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name)
Definition: ifapi_helpers.c:753
void free_string_list(NODE_STR_T *node)
Definition: ifapi_helpers.c:651
TSS2_RC ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index)
Definition: ifapi_helpers.c:1847
TSS2_RC ifapi_filter_pcr_selection_by_index(TPML_PCR_SELECTION *pcr_selection, const TPM2_HANDLE *pcr_index, size_t pcr_count)
Definition: ifapi_helpers.c:2295
TSS2_RC append_object_to_list(void *object, NODE_OBJECT_T **object_list)
Definition: ifapi_helpers.c:911
TSS2_RC ifapi_calculate_pcr_digest(json_object *jso_event_list, const FAPI_QUOTE_INFO *quote_info, TPM2B_DIGEST *pcr_digest)
Definition: ifapi_helpers.c:2126
TSS2_RC ifapi_compute_policy_digest(TPML_PCRVALUES *pcrs, TPML_PCR_SELECTION *pcr_selection, TPMI_ALG_HASH hash_alg, TPM2B_DIGEST *pcr_digest)
Definition: ifapi_helpers.c:2368
TSS2_RC ifapi_tpm_to_fapi_signature(IFAPI_OBJECT *sig_key_object, TPMT_SIGNATURE *tpm_signature, uint8_t **signature, size_t *signatureSize)
Definition: ifapi_helpers.c:1678
void ifapi_free_object_list(NODE_OBJECT_T *node)
Definition: ifapi_helpers.c:670
bool object_with_auth(IFAPI_OBJECT *object)
Definition: ifapi_helpers.c:1103
bool ifapi_hierarchy_path_p(const char *path)
Definition: ifapi_helpers.c:342
TSS2_RC ifapi_object_cmp_nv_public(IFAPI_OBJECT *object, void *nv_public, bool *equal)
Definition: ifapi_helpers.c:1641
bool ifapi_cmp_public_key(TPM2B_PUBLIC *key1, TPM2B_PUBLIC *key2)
Definition: ifapi_helpers.c:2460
void ifapi_init_hierarchy_object(IFAPI_OBJECT *hierarchy, ESYS_TR esys_handle)
Definition: ifapi_helpers.c:976
TSS2_RC ifapi_compute_quote_info(IFAPI_OBJECT *sig_key_object, TPM2B_ATTEST *tpm_quoted, char **quoteInfo)
Definition: ifapi_helpers.c:1745
TSS2_RC ifapi_get_quote_info(char const *quoteInfo, TPM2B_ATTEST *tpm_quoted, FAPI_QUOTE_INFO *fapi_quote_ingo)
Definition: ifapi_helpers.c:1801
NODE_STR_T * init_string_list(const char *string)
Definition: ifapi_helpers.c:836
void ifapi_free_node_list(NODE_OBJECT_T *node)
Definition: ifapi_helpers.c:689
TSS2_RC ifapi_object_cmp_name(IFAPI_OBJECT *object, void *name, bool *equal)
Definition: ifapi_helpers.c:1600
void ifapi_cleanup_policy(TPMS_POLICY *policy)
Definition: ifapi_helpers.c:1200
size_t ifapi_path_length(NODE_STR_T *node)
Definition: ifapi_helpers.c:708
TSS2_RC ifapi_check_profile_pcr_selection(const TPML_PCR_SELECTION *pcr_profile, const TPML_PCR_SELECTION *pcr_capablity)
Definition: ifapi_helpers.c:2244
TSS2_RC ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template)
Definition: ifapi_helpers.c:49
TSS2_RC ifapi_asprintf(char **str, const char *fmt,...)
Definition: ifapi_helpers.c:560
TSS2_RC ifapi_path_string_n(char **dest, const char *supdir, NODE_STR_T *node, char *name, size_t n)
Definition: ifapi_helpers.c:794
TSS2_RC ifapi_create_dirs(const char *supdir, const char *path)
Definition: ifapi_helpers.c:1075
ESYS_TR ifapi_get_hierary_handle(const char *path)
Definition: ifapi_helpers.c:274
TSS2_RC ifapi_check_nv_index(const char *path, TPM2_HANDLE nv_index)
Definition: ifapi_helpers.c:1902
bool ifapi_path_type_p(const char *path, const char *type)
Definition: ifapi_helpers.c:241
Definition: ifapi_keystore.h:150
Definition: fapi_int.h:190
Definition: fapi_int.h:170
Definition: fapi_int.h:180
Definition: ifapi_policy_types.h:275
Definition: ifapi_policy_types.h:260
Definition: fapi_types.h:34
Definition: fapi_types.h:24