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
19TSS2_RC
21 TPMS_POLICY *policy,
22 TPMS_POLICYAUTHORIZATION *authorization);
23
24typedef TSS2_RC(*Policy_Compare_Object)(
25 TPMS_POLICY *policy,
26 void *object1,
27 void *object2,
28 bool *found);
29
35 const char *path;
37 struct POLICY_LIST *next;
38};
39
45 const char *path;
48};
49
50typedef 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
57typedef TSS2_RC (*ifapi_policyexec_cbdup) (
58 TPM2B_NAME *name,
59 void *userdata);
60
61typedef TSS2_RC (*ifapi_policyexec_cbpolsel) (
62 TPML_POLICYBRANCHES *branches,
63 size_t *branch_idx,
64 void *userdata);
65
66typedef 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
76typedef 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
84typedef TSS2_RC (*ifapi_policyexec_cbauthnv) (
85 TPM2B_NV_PUBLIC *nv_public,
86 TPMI_ALG_HASH hash_alg,
87 void *userdata);
88
89typedef TSS2_RC (*ifapi_policyexec_cbaction) (
90 const char *action,
91 void *userdata);
92
93typedef 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
114enum 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
127typedef 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
163TSS2_RC
165 IFAPI_POLICY_EXEC_CTX *pol_ctx,
166 TPMI_ALG_HASH hash_alg,
168
169TSS2_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