tpm2-tss  3.2.1
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_eventlog_system.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_EVENTLOG_SYSTEM_H
7 #define IFAPI_EVENTLOG_SYSTEM_H
8 
9 #include <json-c/json.h>
10 #include "efi_event.h"
11 #include "util/aux_util.h"
12 
13 typedef UINT32 TCG_EVENT_TYPE;
14 
15 typedef struct {
16  TCG_EVENT_TYPE in;
17  char *name;
19 
20 typedef bool (*DIGEST2_CALLBACK)(TCG_DIGEST2 const *digest, size_t size,
21  void *data);
22 typedef bool (*EVENT2_CALLBACK)(TCG_EVENT_HEADER2 const *event_hdr, size_t size,
23  void *data);
24 typedef bool (*EVENT2DATA_CALLBACK)(TCG_EVENT2 const *event, UINT32 type,
25  void *data);
26 typedef bool (*SPECID_CALLBACK)(TCG_EVENT const *event, void *data);
27 typedef bool (*LOG_EVENT_CALLBACK)(TCG_EVENT const *event_hdr, size_t size,
28  void *data);
29 
30 typedef struct {
31  void *data;
32  SPECID_CALLBACK specid_cb;
33  LOG_EVENT_CALLBACK log_eventhdr_cb;
34  EVENT2_CALLBACK event2hdr_cb;
35  DIGEST2_CALLBACK digest2_cb;
36  EVENT2DATA_CALLBACK event2_cb;
37  uint32_t sha1_used;
38  uint32_t sha256_used;
39  uint32_t sha384_used;
40  uint32_t sha512_used;
41  uint32_t sm3_256_used;
42  uint8_t sha1_pcrs[TPM2_MAX_PCRS][TPM2_SHA1_DIGEST_SIZE];
43  uint8_t sha256_pcrs[TPM2_MAX_PCRS][TPM2_SHA256_DIGEST_SIZE];
44  uint8_t sha384_pcrs[TPM2_MAX_PCRS][TPM2_SHA384_DIGEST_SIZE];
45  uint8_t sha512_pcrs[TPM2_MAX_PCRS][TPM2_SHA512_DIGEST_SIZE];
46  uint8_t sm3_256_pcrs[TPM2_MAX_PCRS][TPM2_SM3_256_DIGEST_SIZE];
48 
51 typedef struct {
52  UINT32 event_type;
53  UINT8_ARY data;
55 
56 
57 bool digest2_accumulator_callback(TCG_DIGEST2 const *digest, size_t size,
58  void *data);
59 
60 bool parse_event2body(TCG_EVENT2 const *event, UINT32 type);
61 bool foreach_digest2(tpm2_eventlog_context *ctx, UINT32 event_type, unsigned pcr_index,
62  TCG_DIGEST2 const *event_hdr, size_t count, size_t size);
63 bool parse_event2(TCG_EVENT_HEADER2 const *eventhdr, size_t buf_size,
64  size_t *event_size, size_t *digests_size);
65 bool foreach_event2(tpm2_eventlog_context *ctx, TCG_EVENT_HEADER2 const *eventhdr_start, size_t size);
66 bool specid_event(TCG_EVENT const *event, size_t size, TCG_EVENT_HEADER2 **next);
67 bool parse_eventlog(tpm2_eventlog_context *ctx, BYTE const *eventlog, size_t size);
68 
69 TSS2_RC
70 ifapi_json_IFAPI_FIRMWARE_EVENT_deserialize(
71  json_object *jso,
73  bool *verify);
74 
75 #endif /* IFAPI_EVENTLOG_SYSTEM_H */
Definition: ifapi_eventlog_system.h:51
Definition: ifapi_eventlog_system.h:15
Definition: fapi_types.h:15
Definition: ifapi_eventlog_system.h:30