tpm2-tss  3.2.1
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_policy_execute.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_EXECUTE_H
7 #define FAPI_POLICY_EXECUTE_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 
19 TSS2_RC
21  TPMS_POLICY *policy,
22  TPMS_POLICYAUTHORIZATION *authorization);
23 
24 typedef TSS2_RC(*Policy_Compare_Object)(
25  TPMS_POLICY *policy,
26  void *object1,
27  void *object2,
28  bool *found);
29 
34 struct POLICY_LIST {
35  const char *path;
37  struct POLICY_LIST *next;
38 };
39 
45  const char *path;
48 };
49 
50 typedef TSS2_RC (*ifapi_policyexec_cbauth) (
51  TPM2B_NAME *name,
52  ESYS_TR *object_handle,
53  ESYS_TR *auth_handle,
54  ESYS_TR *authSession,
55  void *userdata);
56 
57 typedef TSS2_RC (*ifapi_policyexec_cbdup) (
58  TPM2B_NAME *name,
59  void *userdata);
60 
61 typedef TSS2_RC (*ifapi_policyexec_cbpolsel) (
62  TPML_POLICYBRANCHES *branches,
63  size_t *branch_idx,
64  void *userdata);
65 
66 typedef TSS2_RC (*ifapi_policyexec_cbsign) (
67  char *key_pem,
68  char *public_key_hint,
69  TPMI_ALG_HASH key_pem_hash_alg,
70  uint8_t *buffer,
71  size_t buffer_size,
72  const uint8_t **signature,
73  size_t *signature_size,
74  void *userdata);
75 
76 typedef TSS2_RC (*ifapi_policyexec_cbauthpol) (
77  TPMT_PUBLIC *key_public,
78  TPMI_ALG_HASH hash_alg,
79  TPM2B_DIGEST *digest,
80  TPM2B_NONCE *policyRef,
81  TPMT_SIGNATURE *signature,
82  void *userdata);
83 
84 typedef TSS2_RC (*ifapi_policyexec_cbauthnv) (
85  TPM2B_NV_PUBLIC *nv_public,
86  TPMI_ALG_HASH hash_alg,
87  void *userdata);
88 
89 typedef TSS2_RC (*ifapi_policyexec_cbaction) (
90  const char *action,
91  void *userdata);
92 
93 typedef struct {
94  ifapi_policyexec_cbauth cbauth;
96  void *cbauth_userdata;
97  ifapi_policyexec_cbpolsel cbpolsel;
99  void *cbpolsel_userdata;
100  ifapi_policyexec_cbsign cbsign;
101  void *cbsign_userdata;
102  ifapi_policyexec_cbauthpol cbauthpol;
103  void *cbauthpol_userdata;
104  ifapi_policyexec_cbauthnv cbauthnv;
105  void *cbauthnv_userdata;
106  ifapi_policyexec_cbdup cbdup;
108  void *cbdup_userdata;
109  ifapi_policyexec_cbaction cbaction;
110  void *cbaction_userdata;
112 
114 enum IFAPI_STATE_POLICY_EXCECUTE {
115  POLICY_EXECUTE_INIT = 0,
116  POLICY_EXECUTE_FINISH,
117  POLICY_EXECUTE_CALLBACK,
118  POLICY_LOAD_KEY,
119  POLICY_FLUSH_KEY,
120  POLICY_VERIFY,
121  POLICY_AUTH_CALLBACK,
122  POLICY_AUTH_SENT,
123  POLICY_EXEC_ESYS,
124  POLICY_LOAD_SYM_KEY
125 };
126 
127 typedef struct IFAPI_POLICY_CALLBACK_CTX IFAPI_POLICY_CALLBACK_CTX;
128 
131  enum IFAPI_STATE_POLICY_EXCECUTE state;
134  TPML_DIGEST digest_list;
138  TPMS_POLICY *policy;
140  ESYS_TR object_handle;
141  ESYS_TR nv_index;
142  ESYS_TR auth_handle;
145  ESYS_TR auth_session;
146  TPMI_ALG_HASH hash_alg;
147  void *app_data;
149  TPM2B_DIGEST *nonceTPM;
150  uint8_t *buffer;
151  size_t buffer_size;
152  TPM2B_NAME name;
153  char *pem_key;
161 };
162 
163 TSS2_RC
165  IFAPI_POLICY_EXEC_CTX *pol_ctx,
166  TPMI_ALG_HASH hash_alg,
168 
169 TSS2_RC
171  ESYS_CONTEXT *esys_ctx,
172  IFAPI_POLICY_EXEC_CTX *current_policy);
173 
174 #endif /* FAPI_POLICY_EXECUTE_H */
uint32_t ESYS_TR
Definition: tss2_esys.h:16
Definition: esys_int.h:160
TSS2_RC ifapi_extend_authorization(TPMS_POLICY *policy, TPMS_POLICYAUTHORIZATION *authorization)
Definition: ifapi_policy_execute.c:92
TSS2_RC ifapi_policyeval_execute_prepare(IFAPI_POLICY_EXEC_CTX *pol_ctx, TPMI_ALG_HASH hash_alg, TPMS_POLICY *policy)
Definition: ifapi_policy_execute.c:1669
TSS2_RC ifapi_policyeval_execute(ESYS_CONTEXT *esys_ctx, IFAPI_POLICY_EXEC_CTX *current_policy)
Definition: ifapi_policy_execute.c:1712
Definition: ifapi_keystore.h:145
Definition: ifapi_policy_execute.h:130
void * app_data
Definition: ifapi_policy_execute.h:147
ifapi_policyeval_EXEC_CB callbacks
Definition: ifapi_policy_execute.h:157
enum IFAPI_STATE_POLICY_EXCECUTE state
Definition: ifapi_policy_execute.h:131
NODE_OBJECT_T * policy_elements
Definition: ifapi_policy_execute.h:148
ESYS_TR policySessionSav
Definition: ifapi_policy_execute.h:139
bool flush_handle
Definition: ifapi_policy_execute.h:156
struct POLICY_LIST * policy_list
Definition: ifapi_policy_execute.h:154
IFAPI_POLICY_EXEC_CTX * prev
Definition: ifapi_policy_execute.h:136
ESYS_TR session
Definition: ifapi_policy_execute.h:137
IFAPI_OBJECT auth_objectNV
Definition: ifapi_policy_execute.h:143
IFAPI_POLICY_EXEC_CTX * next
Definition: ifapi_policy_execute.h:135
IFAPI_OBJECT * auth_object
Definition: ifapi_policy_execute.h:144
char * pem_key
Definition: ifapi_policy_execute.h:153
Definition: ifapi_policy_execute.h:34
const char * path
Definition: ifapi_policy_execute.h:35
struct POLICY_LIST * next
Definition: ifapi_policy_execute.h:37
TPMS_POLICY policy
Definition: ifapi_policy_execute.h:36
Definition: ifapi_policy_types.h:239
Definition: ifapi_policy_types.h:128
Definition: ifapi_policy_types.h:291
Definition: ifapi_policy_execute.h:93
ifapi_policyexec_cbpolsel cbpolsel
Definition: ifapi_policy_execute.h:97
ifapi_policyexec_cbdup cbdup
Definition: ifapi_policy_execute.h:106
ifapi_policyexec_cbauthnv cbauthnv
Definition: ifapi_policy_execute.h:104
ifapi_policyexec_cbauth cbauth
Definition: ifapi_policy_execute.h:94
ifapi_policyexec_cbaction cbaction
Definition: ifapi_policy_execute.h:109
ifapi_policyexec_cbauthpol cbauthpol
Definition: ifapi_policy_execute.h:102
ifapi_policyexec_cbsign cbsign
Definition: ifapi_policy_execute.h:100
Definition: fapi_types.h:34
Definition: ifapi_policy_execute.h:44
const char * path
Definition: ifapi_policy_execute.h:45
TPMS_POLICY policy
Definition: ifapi_policy_execute.h:46
struct policy_object_node * next
Definition: ifapi_policy_execute.h:47