tpm2-tss 4.1.3
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 <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#include "fapi_int.h"
19#include "ifapi_policy_callbacks.h"
20
21TSS2_RC
23 TPML_DIGEST_VALUES *digest_values,
24 TPMI_ALG_HASH hashAlg,
25 size_t *idx);
26
27TSS2_RC
29 TPML_PCRVALUES *pcrs,
30 TPML_PCR_SELECTION *pcr_selection,
31 TPMI_ALG_HASH hash_alg,
32 TPM2B_DIGEST *pcr_digest);
33
34static inline void ifapi_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(
49 IFAPI_POLICY_CTX *policyContext,
50 IFAPI_POLICY_STORE *pstore,
51 IFAPI_IO *io,
52 const char *policyPath,
53 TPMS_POLICY *policy,
54 TPMI_ALG_HASH hash_alg,
55 size_t *digest_idx,
56 size_t *hash_size);
57
58TSS2_RC
59ifapi_execute_tree_ex(
60 enum IFAPI_STATE_POLICY *state,
61 IFAPI_POLICY_EXEC_CTX *context,
63 IFAPI_POLICY_STORE *pstore,
64 IFAPI_IO *io,
65 const char *policyPath,
66 TPMS_POLICY *policy,
67 ESYS_CONTEXT *esys_ctx,
68 TPMI_ALG_HASH hash_alg,
69 bool do_flush);
70
71static inline TSS2_RC
72ifapi_calculate_tree(
73 FAPI_CONTEXT *context,
74 const char *policyPath,
75 TPMS_POLICY *policy,
76 TPMI_ALG_HASH hash_alg,
77 size_t *digest_idx,
78 size_t *hash_size) {
79
80 return ifapi_calculate_tree_ex(&context->policy,
81 &context->pstore,
82 &context->io,
83 policyPath,
84 policy,
85 hash_alg,
86 digest_idx,
87 hash_size);
88}
89
90#endif /* IFAPI_POLICY_H */
Definition esys_int.h:162
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:2458
TSS2_RC ifapi_get_key_public(const char *path, TPMT_PUBLIC *public, void *ctx)
Definition ifapi_policy_callbacks.c:87
TSS2_RC ifapi_get_object_name(const char *path, TPM2B_NAME *name, void *ctx)
Definition ifapi_policy_callbacks.c:160
TSS2_RC get_policy_digest_idx(TPML_DIGEST_VALUES *digest_values, TPMI_ALG_HASH hashAlg, size_t *idx)
Definition ifapi_policy_execute.c:143
Definition fapi_int.h:1164
IFAPI_POLICY_CTX policy
Definition fapi_int.h:1204
Definition ifapi_io.h:15
Definition fapi_int.h:619
Definition ifapi_policy_instantiate.h:25
TSS2_POLICY_CALC_CALLBACKS callbacks
Definition ifapi_policy_instantiate.h:28
Definition ifapi_policy_execute.h:67
Definition ifapi_policy_store.h:17
Definition ifapi_policy_types.h:275