tpm2-tss 4.2.0
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_policy.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 IFAPI_POLICY_H
7#define IFAPI_POLICY_H
8
9#include <stdbool.h> // for bool
10#include <stddef.h> // for size_t
11
12#include "fapi_int.h" // for FAPI_CONTEXT, IFAPI_POLICY_CTX
13#include "ifapi_io.h" // for IFAPI_IO
14#include "ifapi_policy_callbacks.h" // for ifapi_get_key_public, ifapi_ge...
15#include "ifapi_policy_instantiate.h" // for IFAPI_POLICY_EVAL_INST_CTX
16#include "ifapi_policy_store.h" // for IFAPI_POLICY_STORE
17#include "ifapi_policy_types.h" // for TPMS_POLICY
18#include "tss2_common.h" // for TSS2_RC
19#include "tss2_esys.h" // for ESYS_CONTEXT
20#include "tss2_fapi.h" // for FAPI_CONTEXT
21#include "tss2_policy.h" // for TSS2_POLICY_CALC_CALLBACKS
22#include "tss2_tpm2_types.h" // for TPMI_ALG_HASH, TPM2B_DIGEST
23
24TSS2_RC
25get_policy_digest_idx(TPML_DIGEST_VALUES *digest_values, TPMI_ALG_HASH hashAlg, size_t *idx);
26
27TSS2_RC
28ifapi_compute_policy_digest(TPML_PCRVALUES *pcrs,
29 TPML_PCR_SELECTION *pcr_selection,
30 TPMI_ALG_HASH hash_alg,
31 TPM2B_DIGEST *pcr_digest);
32
33static inline void
34ifapi_policy_ctx_init(FAPI_CONTEXT *context) {
35
36 TSS2_POLICY_CALC_CALLBACKS *callbacks = &context->policy.eval_ctx.callbacks;
37 callbacks->cbname = ifapi_get_object_name;
38 callbacks->cbname_userdata = context;
39 callbacks->cbpublic = ifapi_get_key_public;
40 callbacks->cbpublic_userdata = context;
41 callbacks->cbnvpublic = ifapi_get_nv_public;
42 callbacks->cbnvpublic_userdata = context;
43 callbacks->cbpcr = ifapi_read_pcr;
44 callbacks->cbpcr_userdata = context;
45}
46
47TSS2_RC
48ifapi_calculate_tree_ex(IFAPI_POLICY_CTX *policyContext,
49 IFAPI_POLICY_STORE *pstore,
50 IFAPI_IO *io,
51 const char *policyPath,
52 TPMS_POLICY *policy,
53 TPMI_ALG_HASH hash_alg,
54 size_t *digest_idx,
55 size_t *hash_size);
56
57TSS2_RC
58ifapi_execute_tree_ex(enum IFAPI_STATE_POLICY *state,
59 IFAPI_POLICY_EXEC_CTX *context,
61 IFAPI_POLICY_STORE *pstore,
62 IFAPI_IO *io,
63 const char *policyPath,
64 TPMS_POLICY *policy,
65 ESYS_CONTEXT *esys_ctx,
66 TPMI_ALG_HASH hash_alg,
67 bool do_flush);
68
69static inline TSS2_RC
70ifapi_calculate_tree(FAPI_CONTEXT *context,
71 const char *policyPath,
72 TPMS_POLICY *policy,
73 TPMI_ALG_HASH hash_alg,
74 size_t *digest_idx,
75 size_t *hash_size) {
76
77 return ifapi_calculate_tree_ex(&context->policy, &context->pstore, &context->io, policyPath,
78 policy, hash_alg, digest_idx, hash_size);
79}
80
81#endif /* IFAPI_POLICY_H */
Definition esys_int.h:168
TSS2_RC ifapi_compute_policy_digest(TPML_PCRVALUES *pcrs, TPML_PCR_SELECTION *pcr_selection, TPMI_ALG_HASH hash_alg, TPM2B_DIGEST *pcr_digest)
Definition ifapi_helpers.c:2410
TSS2_RC ifapi_get_key_public(const char *path, TPMT_PUBLIC *public, void *ctx)
Definition ifapi_policy_callbacks.c:89
TSS2_RC ifapi_get_object_name(const char *path, TPM2B_NAME *name, void *ctx)
Definition ifapi_policy_callbacks.c:156
TSS2_RC get_policy_digest_idx(TPML_DIGEST_VALUES *digest_values, TPMI_ALG_HASH hashAlg, size_t *idx)
Definition ifapi_policy_execute.c:131
Definition fapi_int.h:1226
IFAPI_POLICY_CTX policy
Definition fapi_int.h:1267
Definition ifapi_io.h:17
Definition fapi_int.h:675
Definition ifapi_policy_instantiate.h:19
TSS2_POLICY_CALC_CALLBACKS callbacks
Definition ifapi_policy_instantiate.h:22
Definition ifapi_policy_execute.h:67
Definition ifapi_policy_store.h:14
Definition ifapi_policy_types.h:281