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