tpm2-tss 4.0.1
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_policy_callbacks.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_POLICY_CALLBACKS_H
7#define FAPI_POLICY_CALLBACKS_H
8
9
11enum IFAPI_STATE_POL_CB_EXCECUTE {
12 POL_CB_EXECUTE_INIT = 0,
13 POL_CB_LOAD_KEY,
14 POL_CB_LOAD_KEY_FINISH,
15 POL_CB_SEARCH_POLICY,
16 POL_CB_EXECUTE_SUB_POLICY,
17 POL_CB_NV_READ,
18 POL_CB_READ_NV_POLICY,
19 POL_CB_READ_OBJECT,
20 POL_CB_AUTHORIZE_OBJECT,
21 POL_CB_AUTHORIZE_KEY
22};
23
25typedef struct {
26 enum IFAPI_STATE_POL_CB_EXCECUTE cb_state;
30 ESYS_TR key_handle;
31 ESYS_TR nv_index;
32 ESYS_TR auth_index;
33 ESYS_TR flush_handle;
35 IFAPI_LoadKey load_ctx_sav;
36 IFAPI_LoadKey load_ctx;
37 IFAPI_CreatePrimary create_primary_ctx_sav;
38 IFAPI_CreatePrimary create_primary_ctx;
39 IFAPI_OBJECT *key_object_ptr;
40 IFAPI_OBJECT *auth_object_ptr;
41 IFAPI_NV_Cmds nv_cmd_state;
43 TPM2B_DIGEST policy_digest;
44 ESYS_TR session;
45 TPMS_POLICY *policy;
47
48TSS2_RC
49ifapi_get_key_public(
50 const char *path,
51 TPMT_PUBLIC *public,
52 void *context);
53
54TSS2_RC
55ifapi_get_object_name(
56 const char *path,
57 TPM2B_NAME *name,
58 void *context);
59
60TSS2_RC
61ifapi_get_nv_public(
62 const char *path,
63 TPMI_RH_NV_INDEX nv_index,
64 TPMS_NV_PUBLIC *nv_public,
65 void *context);
66
67TSS2_RC
68ifapi_read_pcr(
69 TSS2_POLICY_PCR_SELECTION *pcr_selection,
70 TPML_PCR_SELECTION *out_pcr_selection,
71 TPML_DIGEST *out_pcr_digests,
72 void *ctx);
73
74TSS2_RC
75ifapi_policyeval_cbauth(
76 TPM2B_NAME *name,
77 ESYS_TR *object_handle,
78 ESYS_TR *auth_handle,
79 ESYS_TR *authSession,
80 void *userdata);
81
82TSS2_RC
83ifapi_policyeval_cbload_key(
84 TPM2B_NAME *name,
85 ESYS_TR *object_handle,
86 void *userdata);
87
88TSS2_RC
89ifapi_branch_selection(
90 TSS2_OBJECT *auth_object,
91 const char *branch_names[8],
92 size_t branch_count,
93 size_t *branch_idx,
94 void *userdata);
95
96TSS2_RC
97ifapi_sign_buffer(
98 char *key_pem,
99 char *public_key_hint,
100 TPMI_ALG_HASH key_pem_hash_alg,
101 uint8_t *buffer,
102 size_t buffer_size,
103 const uint8_t **signature,
104 size_t *signature_size,
105 void *userdata);
106
107TSS2_RC
108ifapi_exec_auth_policy(
109 TPMT_PUBLIC *key_public,
110 TPMI_ALG_HASH hash_alg,
111 TPM2B_DIGEST *digest,
112 TPM2B_NONCE *policyRef,
113 TPMT_SIGNATURE *signature,
114 void *userdata);
115
116TSS2_RC
117ifapi_exec_auth_nv_policy(
118 TPMS_NV_PUBLIC *nv_public,
119 TPMI_ALG_HASH hash_alg,
120 void *userdata);
121
122TSS2_RC
123ifapi_get_duplicate_name(
124 TPM2B_NAME *name,
125 void *userdata);
126
127TSS2_RC
128ifapi_policy_action(
129 const char *action,
130 void *userdata);
131
132#endif /* FAPI_POLICY_CALLBACKS_H */
Definition ifapi_keystore.h:150
Definition fapi_int.h:569
Definition fapi_int.h:719
Definition fapi_int.h:223
Definition ifapi_policy_callbacks.h:25
ESYS_TR flush_handle
Definition ifapi_policy_callbacks.h:33
char * object_path
Definition ifapi_policy_callbacks.h:28
ESYS_TR key_handle
Definition ifapi_policy_callbacks.h:30
IFAPI_OBJECT object
Definition ifapi_policy_callbacks.h:29
ESYS_TR nv_index
Definition ifapi_policy_callbacks.h:31
IFAPI_OBJECT auth_object
Definition ifapi_policy_callbacks.h:34
enum IFAPI_STATE_POL_CB_EXCECUTE cb_state
Definition ifapi_policy_callbacks.h:26
IFAPI_NV_Cmds nv_cmd_state_sav
Definition ifapi_policy_callbacks.h:42
ESYS_TR auth_index
Definition ifapi_policy_callbacks.h:32
Definition ifapi_policy_types.h:275