tpm2-tss  3.2.0
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_eventlog.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_H
7 #define IFAPI_EVENTLOG_H
8 
9 #include <json-c/json.h>
10 
11 #include "tss2_tpm2_types.h"
12 #include "ifapi_io.h"
13 
16 typedef UINT32 IFAPI_EVENT_TYPE;
17 #define IFAPI_IMA_EVENT_TAG 1
18 #define IFAPI_TSS_EVENT_TAG 2
22 typedef struct {
23  TPM2B_EVENT data;
24  char *event;
26 
29 typedef struct {
30  TPM2B_DIGEST eventData;
31  char *eventName;
33 
36 typedef union {
40 
43 typedef struct IFAPI_EVENT {
44  UINT32 recnum;
45  TPM2_HANDLE pcr;
46  TPML_DIGEST_VALUES digests;
47  IFAPI_EVENT_TYPE type;
49 } IFAPI_EVENT;
50 
51 enum IFAPI_EVENTLOG_STATE {
52  IFAPI_EVENTLOG_STATE_INIT = 0,
53  IFAPI_EVENTLOG_STATE_READING,
54  IFAPI_EVENTLOG_STATE_APPENDING,
55  IFAPI_EVENTLOG_STATE_WRITING
56 };
57 
58 typedef struct IFAPI_EVENTLOG {
59  enum IFAPI_EVENTLOG_STATE state;
60  char *log_dir;
61  struct IFAPI_EVENT event;
62  TPM2_HANDLE pcrList[TPM2_MAX_PCRS];
63  size_t pcrListSize;
64  size_t pcrListIdx;
65  json_object *log;
67 
68 TSS2_RC
70  IFAPI_EVENTLOG *eventlog,
71  const char *log_dir);
72 
73 TSS2_RC
75  IFAPI_EVENTLOG *eventlog,
76  IFAPI_IO *io,
77  const TPM2_HANDLE *pcrList,
78  size_t pcrListSize);
79 
80 TSS2_RC
82  IFAPI_EVENTLOG *eventlog,
83  IFAPI_IO *io,
84  char **log);
85 
86 TSS2_RC
88  IFAPI_EVENTLOG *eventlog,
89  IFAPI_IO *io);
90 
91 TSS2_RC
93  IFAPI_EVENTLOG *eventlog,
94  IFAPI_IO *io,
95  const IFAPI_EVENT *event);
96 
97 void
99  IFAPI_EVENT * event);
100 
101 #endif /* IFAPI_EVENTLOG_H */
char * event
Definition: ifapi_eventlog.h:24
TPML_DIGEST_VALUES digests
Definition: ifapi_eventlog.h:46
Definition: ifapi_io.h:15
Definition: ifapi_eventlog.h:29
char * eventName
Definition: ifapi_eventlog.h:31
TPM2B_EVENT data
Definition: ifapi_eventlog.h:23
IFAPI_EVENT_UNION sub_event
Definition: ifapi_eventlog.h:48
TPM2_HANDLE pcr
Definition: ifapi_eventlog.h:45
void ifapi_cleanup_event(IFAPI_EVENT *event)
Definition: ifapi_eventlog.c:363
TSS2_RC ifapi_eventlog_append_finish(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io, const IFAPI_EVENT *event)
Definition: ifapi_eventlog.c:294
UINT32 recnum
Definition: ifapi_eventlog.h:44
TSS2_RC ifapi_eventlog_get_async(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io, const TPM2_HANDLE *pcrList, size_t pcrListSize)
Definition: ifapi_eventlog.c:69
TPM2B_DIGEST eventData
Definition: ifapi_eventlog.h:30
Definition: ifapi_eventlog.h:43
Definition: ifapi_eventlog.h:22
TSS2_RC ifapi_eventlog_initialize(IFAPI_EVENTLOG *eventlog, const char *log_dir)
Definition: ifapi_eventlog.c:35
IFAPI_IMA_EVENT ima_event
Definition: ifapi_eventlog.h:38
TSS2_RC ifapi_eventlog_append_check(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io)
Definition: ifapi_eventlog.c:224
Definition: ifapi_eventlog.h:36
IFAPI_TSS_EVENT tss_event
Definition: ifapi_eventlog.h:37
IFAPI_EVENT_TYPE type
Definition: ifapi_eventlog.h:47
TSS2_RC ifapi_eventlog_get_finish(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io, char **log)
Definition: ifapi_eventlog.c:115
Definition: ifapi_eventlog.h:58