tpm2-tss  3.2.1
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 
21 TSS2_RC
23  TPML_DIGEST_VALUES *digest_values,
24  TPMI_ALG_HASH hashAlg,
25  size_t *idx);
26 
27 TSS2_RC
29  TPML_PCRVALUES *pcrs,
30  TPML_PCR_SELECTION *pcr_selection,
31  TPMI_ALG_HASH hash_alg,
32  TPM2B_DIGEST *pcr_digest);
33 
34 static 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 
47 TSS2_RC
48 ifapi_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 
58 TSS2_RC
59 ifapi_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 
71 static inline TSS2_RC
72 ifapi_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:161
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:2368
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:1157
IFAPI_POLICY_CTX policy
Definition: fapi_int.h:1197
Definition: ifapi_io.h:15
Definition: fapi_int.h:616
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