tpm2-tss 4.2.0
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 <json.h> // for json_object
10#include <stdbool.h> // for bool
11#include <stddef.h> // for size_t
12#include <stdint.h> // for uint8_t
13
14#include "fapi_int.h" // for IFAPI_KEY_TEMPLATE, IFAPI_NV_TEMPLATE
15#include "fapi_types.h" // for NODE_STR_T, NODE_OBJECT_T
16#include "ifapi_eventlog.h" // for FAPI_QUOTE_INFO
17#include "ifapi_keystore.h" // for IFAPI_OBJECT
18#include "ifapi_policy_types.h" // for TPMS_POLICY, TPMT_POLICYELEMENT
19#include "tss2_common.h" // for TSS2_RC
20#include "tss2_esys.h" // for ESYS_TR
21#include "tss2_policy.h" // for TPML_PCRVALUES, TSS2_POLICY_PCR_SELE...
22#include "tss2_tpm2_types.h" // for TPML_PCR_SELECTION, TPM2_HANDLE, TPM...
23
26typedef struct {
27 TPMI_ALG_HASH bank;
28 TPM2_HANDLE pcr;
29 TPM2B_DIGEST value;
31
32TSS2_RC
33ifapi_create_dirs(const char *supdir, const char *path);
34
35TSS2_RC
36ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template);
37
38TSS2_RC
39ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template, const char *policy);
40
41bool ifapi_path_type_p(const char *path, const char *type);
42
44ifapi_get_hierary_handle(const char *path);
45
46bool ifapi_null_primary_p(const char *path);
47
48bool ifapi_hierarchy_path_p(const char *path);
49
50bool ifapi_TPMT_PUBLIC_cmp(TPMT_PUBLIC *in1, TPMT_PUBLIC *in2);
51
52void ifapi_init_hierarchy_object(IFAPI_OBJECT *hierarchy, ESYS_TR esys_handle);
53
54TSS2_RC
55ifapi_set_name_hierarchy_object(IFAPI_OBJECT *hierarchy);
56
57char *get_description(IFAPI_OBJECT *object);
58
59size_t ifapi_path_length(NODE_STR_T *node);
60
61void ifapi_free_object_list(NODE_OBJECT_T *node);
62
63void ifapi_free_node_list(NODE_OBJECT_T *node);
64
65TSS2_RC
66ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name);
67
68TSS2_RC
69ifapi_path_string_n(char **dest, const char *supdir, NODE_STR_T *node, char *name, size_t n);
70
71TSS2_RC
72ifapi_asprintf(char **str, const char *fmt, ...);
73
74NODE_STR_T *split_string(const char *string, char *delimiter);
75
76NODE_STR_T *init_string_list(const char *string);
77
78bool add_string_to_list(NODE_STR_T *str_list, char *string);
79
80void free_string_list(NODE_STR_T *node);
81
83
84TPMS_POLICY *ifapi_copy_policy(const TPMS_POLICY *from_policy);
85
86TSS2_RC
87ifapi_get_name(TPMT_PUBLIC *publicInfo, TPM2B_NAME *name);
88
89TSS2_RC
90ifapi_nv_get_name(TPMS_NV_PUBLIC *publicInfo, TPM2B_NAME *name);
91
92TSS2_RC
93ifapi_object_cmp_name(IFAPI_OBJECT *object, void *name, bool *equal);
94
95TSS2_RC
96ifapi_object_cmp_nv_public(IFAPI_OBJECT *object, void *nv_public, bool *equal);
97
98TSS2_RC
100 TPMT_SIGNATURE *tpm_signature,
101 uint8_t **signature,
102 size_t *signatureSize);
103
104TSS2_RC
105ifapi_compute_quote_info(IFAPI_OBJECT *sig_key_object,
106 TPM2B_ATTEST *tpm_quoted,
107 FAPI_QUOTE_INFO *fapi_quote_info,
108 char **quoteInfo);
109
110TSS2_RC
111ifapi_get_quote_info(char const *quoteInfo,
112 TPM2B_ATTEST *tpm_quoted,
113 FAPI_QUOTE_INFO *fapi_quote_ingo);
114
115TSS2_RC
116push_object_to_list(void *object, NODE_OBJECT_T **object_list);
117
118TSS2_RC
119append_object_to_list(void *object, NODE_OBJECT_T **object_list);
120
121bool object_with_auth(IFAPI_OBJECT *object);
122
123TSS2_RC
124ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index);
125
126TSS2_RC
127ifapi_check_nv_index(const char *path, TPM2_HANDLE nv_index);
128
129TSS2_RC
130ifapi_check_profile_pcr_selection(const TPML_PCR_SELECTION *pcr_profile,
131 const TPML_PCR_SELECTION *pcr_capablity);
132
133TSS2_RC
134ifapi_filter_pcr_selection_by_index(TPML_PCR_SELECTION *pcr_selection,
135 const TPM2_HANDLE *pcr_index,
136 size_t pcr_count);
137
138TSS2_RC
139ifapi_calculate_pcrs(json_object *jso_event_list,
140 const TPML_PCR_SELECTION *pcr_selection,
141 TPMI_ALG_HASH pcr_digest_hash_alg,
142 const TPM2B_DIGEST *quote_digest,
143 IFAPI_PCR_REG *pcrs);
144
145TSS2_RC ifapi_calculate_pcr_digest(json_object *jso_event_list, const FAPI_QUOTE_INFO *quote_info);
146
147TSS2_RC
148ifapi_compute_policy_digest(TPML_PCRVALUES *pcrs,
149 TPML_PCR_SELECTION *pcr_selection,
150 TPMI_ALG_HASH hash_alg,
151 TPM2B_DIGEST *pcr_digest);
152
153bool ifapi_cmp_public_key(TPM2B_PUBLIC *key1, TPM2B_PUBLIC *key2);
154
155void ifapi_check_json_object_fields(json_object *jso, char **field_tab, size_t size_of_tab);
156
157TSS2_RC
158ifapi_extend_pcr(TPMI_ALG_HASH alg, uint8_t *pcr, const uint8_t *digest, size_t alg_size);
159
160TSS2_RC ifapi_pcr_selection_to_pcrvalues(TPML_PCR_SELECTION *pcr_selection,
161 TPML_DIGEST *pcr_digests,
162 TPML_PCRVALUES **out);
163
164void ifapi_helper_init_policy_pcr_selections(TSS2_POLICY_PCR_SELECTION *s,
165 TPMT_POLICYELEMENT *pol_element);
166
167#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:538
TSS2_RC ifapi_get_name(TPMT_PUBLIC *publicInfo, TPM2B_NAME *name)
Definition ifapi_helpers.c:1475
NODE_STR_T * split_string(const char *string, char *delimiter)
Definition ifapi_helpers.c:610
TSS2_RC push_object_to_list(void *object, NODE_OBJECT_T **object_list)
Definition ifapi_helpers.c:905
bool add_string_to_list(NODE_STR_T *str_list, char *string)
Definition ifapi_helpers.c:879
TPMS_POLICY * ifapi_copy_policy(const TPMS_POLICY *from_policy)
Definition ifapi_helpers.c:1443
TSS2_RC ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template, const char *policy)
Definition ifapi_helpers.c:195
TSS2_RC ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name)
Definition ifapi_helpers.c:776
void free_string_list(NODE_STR_T *node)
Definition ifapi_helpers.c:679
TSS2_RC ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index)
Definition ifapi_helpers.c:1827
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:2339
TSS2_RC append_object_to_list(void *object, NODE_OBJECT_T **object_list)
Definition ifapi_helpers.c:925
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:2410
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:1673
void ifapi_free_object_list(NODE_OBJECT_T *node)
Definition ifapi_helpers.c:697
bool object_with_auth(IFAPI_OBJECT *object)
Definition ifapi_helpers.c:1114
bool ifapi_null_primary_p(const char *path)
Definition ifapi_helpers.c:342
bool ifapi_hierarchy_path_p(const char *path)
Definition ifapi_helpers.c:380
TSS2_RC ifapi_object_cmp_nv_public(IFAPI_OBJECT *object, void *nv_public, bool *equal)
Definition ifapi_helpers.c:1637
bool ifapi_cmp_public_key(TPM2B_PUBLIC *key1, TPM2B_PUBLIC *key2)
Definition ifapi_helpers.c:2493
void ifapi_init_hierarchy_object(IFAPI_OBJECT *hierarchy, ESYS_TR esys_handle)
Definition ifapi_helpers.c:993
TSS2_RC ifapi_get_quote_info(char const *quoteInfo, TPM2B_ATTEST *tpm_quoted, FAPI_QUOTE_INFO *fapi_quote_ingo)
Definition ifapi_helpers.c:1786
NODE_STR_T * init_string_list(const char *string)
Definition ifapi_helpers.c:853
void ifapi_free_node_list(NODE_OBJECT_T *node)
Definition ifapi_helpers.c:715
TSS2_RC ifapi_object_cmp_name(IFAPI_OBJECT *object, void *name, bool *equal)
Definition ifapi_helpers.c:1597
void ifapi_cleanup_policy(TPMS_POLICY *policy)
Definition ifapi_helpers.c:1211
TSS2_RC ifapi_check_nv_index(const char *path, TPM2_HANDLE nv_index)
Definition ifapi_helpers.c:1881
size_t ifapi_path_length(NODE_STR_T *node)
Definition ifapi_helpers.c:733
TSS2_RC ifapi_check_profile_pcr_selection(const TPML_PCR_SELECTION *pcr_profile, const TPML_PCR_SELECTION *pcr_capablity)
Definition ifapi_helpers.c:2295
TSS2_RC ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template)
Definition ifapi_helpers.c:62
TSS2_RC ifapi_asprintf(char **str, const char *fmt,...)
Definition ifapi_helpers.c:590
TSS2_RC ifapi_path_string_n(char **dest, const char *supdir, NODE_STR_T *node, char *name, size_t n)
Definition ifapi_helpers.c:814
TSS2_RC ifapi_create_dirs(const char *supdir, const char *path)
Definition ifapi_helpers.c:1087
ESYS_TR ifapi_get_hierary_handle(const char *path)
Definition ifapi_helpers.c:314
bool ifapi_path_type_p(const char *path, const char *type)
Definition ifapi_helpers.c:283
Definition ifapi_eventlog.h:92
Definition fapi_int.h:191
Definition fapi_int.h:204
Definition ifapi_keystore.h:153
Definition ifapi_helpers.h:26
Definition ifapi_policy_types.h:281
Definition ifapi_policy_types.h:266