tpm2-tss  master
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 
51 enum IFAPI_STATE_POLICY_EXCECUTE {
52  POLICY_EXECUTE_INIT = 0,
53  POLICY_EXECUTE_FINISH,
54  POLICY_EXECUTE_CALLBACK,
55  POLICY_LOAD_KEY,
56  POLICY_LOAD_KEYEDHASH,
57  POLICY_FLUSH_KEY,
58  POLICY_VERIFY,
59  POLICY_AUTH_CALLBACK,
60  POLICY_AUTH_SENT,
61  POLICY_EXEC_ESYS
62 };
63 
64 typedef struct IFAPI_POLICY_CALLBACK_CTX IFAPI_POLICY_CALLBACK_CTX;
65 
68  enum IFAPI_STATE_POLICY_EXCECUTE state;
71  TPML_DIGEST digest_list;
75  TPMS_POLICY *policy;
79  ESYS_TR object_handle;
80  ESYS_TR nv_index;
81  ESYS_TR auth_handle;
84  ESYS_TR auth_session;
85  TPMI_ALG_HASH hash_alg;
86  void *app_data;
88  TPM2B_DIGEST *nonceTPM;
89  uint8_t *buffer;
90  size_t buffer_size;
91  TPM2B_NAME name;
92  char *pem_key;
95  bool flush_handle;
96  TSS2_POLICY_EXEC_CALLBACKS callbacks;
100 };
101 
102 TSS2_RC
104  IFAPI_POLICY_EXEC_CTX *pol_ctx,
105  TPMI_ALG_HASH hash_alg,
107 
108 TSS2_RC
109 ifapi_policyeval_execute(
110  ESYS_CONTEXT *esys_ctx,
111  IFAPI_POLICY_EXEC_CTX *current_policy,
112  bool do_flush);
113 
114 #endif /* FAPI_POLICY_EXECUTE_H */
uint32_t ESYS_TR
Definition: tss2_esys.h:16
Definition: esys_int.h:162
TSS2_RC ifapi_extend_authorization(TPMS_POLICY *policy, TPMS_POLICYAUTHORIZATION *authorization)
Definition: ifapi_policy_execute.c:93
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:1846
Definition: ifapi_keystore.h:150
Definition: ifapi_policy_execute.h:67
void * app_data
Definition: ifapi_policy_execute.h:86
enum IFAPI_STATE_POLICY_EXCECUTE state
Definition: ifapi_policy_execute.h:68
NODE_OBJECT_T * policy_elements
Definition: ifapi_policy_execute.h:87
ESYS_TR policySessionSav
Definition: ifapi_policy_execute.h:76
bool flush_handle
Definition: ifapi_policy_execute.h:95
struct POLICY_LIST * policy_list
Definition: ifapi_policy_execute.h:93
IFAPI_POLICY_EXEC_CTX * prev
Definition: ifapi_policy_execute.h:73
ESYS_TR session
Definition: ifapi_policy_execute.h:74
IFAPI_OBJECT auth_objectNV
Definition: ifapi_policy_execute.h:82
ESYS_TR * enc_session
Definition: ifapi_policy_execute.h:77
TSS2_POLICY_EXEC_CALLBACKS callbacks
Definition: ifapi_policy_execute.h:96
IFAPI_POLICY_EXEC_CTX * next
Definition: ifapi_policy_execute.h:72
IFAPI_OBJECT * auth_object
Definition: ifapi_policy_execute.h:83
char * pem_key
Definition: ifapi_policy_execute.h:92
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:128
Definition: ifapi_policy_types.h:275
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