tpm2-tss  3.2.1
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 #include "efi_event.h"
14 #include "ifapi_ima_eventlog.h"
15 #include "ifapi_eventlog_system.h"
16 
17 #define CONTENT_TYPE "content_type"
18 #define CONTENT "content"
19 
22 typedef UINT32 IFAPI_EVENT_TYPE;
23 #define IFAPI_TSS_EVENT_TAG 2
24 #define IFAPI_IMA_EVENT_TAG 3
25 #define IFAPI_IMA_NG_EVENT_TAG 4
26 #define IFAPI_IMA_SIG_EVENT_TAG 5
27 #define IFAPI_PC_CLIENT 6
28 #define IFAPI_CEL_TAG 8
30 /* Definition of TPMI_CELMGTTYPE Type */
31 typedef UINT32 TPMI_CELMGTTYPE;
32 #define CEL_VERSION 1
33 #define FIRMWARE_END 2
34 #define CEL_TIMESTAMP 80
35 #define STATE_TRANS 81
36 
37 /* Structures of canonical event log format. */
38 
39 /* Definition of TPMS_CEL_VERSION Structure */
40 typedef struct {
41  UINT16 major; /* The major version */
42  UINT16 minor; /* The minor version */
44 
45 /* Definition of TPMU_CAPABILITIES Union <OUT> */
46 typedef union {
47  TPMS_CEL_VERSION cel_version;
48  TPMS_EMPTY firmware_end;
49  UINT64 cel_timestamp;
50 } TPMU_CELMGT;
51 
52 /* Definition of TPMS_EVENT_CELMGT Structure*/
53 typedef struct {
54  TPMI_CELMGTTYPE type; /* type of the cel event structure */
55  TPMU_CELMGT data; /* the type-specific cel event information */
57 
60 typedef struct {
61  TPM2B_EVENT data;
62  char *event;
64 
67 typedef union {
74 
77 typedef struct IFAPI_EVENT {
78  UINT32 recnum;
79  TPM2_HANDLE pcr;
80  TPML_DIGEST_VALUES digests;
81  IFAPI_EVENT_TYPE content_type;
83  bool verify;
85 } IFAPI_EVENT;
86 
87 enum IFAPI_EVENTLOG_STATE {
88  IFAPI_EVENTLOG_STATE_INIT = 0,
89  IFAPI_EVENTLOG_STATE_READING,
90  IFAPI_EVENTLOG_STATE_APPENDING,
91  IFAPI_EVENTLOG_STATE_WRITING
92 };
93 
94 typedef struct IFAPI_EVENTLOG {
95  enum IFAPI_EVENTLOG_STATE state;
96  char *log_dir;
97  const char *firmware_log_file;
98  const char *ima_log_file;
99  struct IFAPI_EVENT event;
100  TPM2_HANDLE pcrList[TPM2_MAX_PCRS];
101  size_t pcrListSize;
102  size_t pcrListIdx;
103  json_object *log;
105 
106 TSS2_RC
107 ifapi_eventlog_initialize(
108  IFAPI_EVENTLOG *eventlog,
109  const char *log_dir,
110  const char *firmware_log_file,
111  const char *ima_log_file);
112 
113 TSS2_RC
115  IFAPI_EVENTLOG *eventlog,
116  IFAPI_IO *io,
117  const TPM2_HANDLE *pcrList,
118  size_t pcrListSize);
119 
120 TSS2_RC
122  IFAPI_EVENTLOG *eventlog,
123  IFAPI_IO *io,
124  char **log);
125 
126 TSS2_RC
128  IFAPI_EVENTLOG *eventlog,
129  IFAPI_IO *io);
130 
131 TSS2_RC
133  IFAPI_EVENTLOG *eventlog,
134  IFAPI_IO *io,
135  const IFAPI_EVENT *event);
136 
137 void
139  IFAPI_EVENT * event);
140 
141 #endif /* IFAPI_EVENTLOG_H */
TSS2_RC ifapi_eventlog_get_finish(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io, char **log)
Definition: ifapi_eventlog.c:201
TSS2_RC ifapi_eventlog_append_finish(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io, const IFAPI_EVENT *event)
Definition: ifapi_eventlog.c:397
void ifapi_cleanup_event(IFAPI_EVENT *event)
Definition: ifapi_eventlog.c:483
TSS2_RC ifapi_eventlog_append_check(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io)
Definition: ifapi_eventlog.c:327
TSS2_RC ifapi_eventlog_get_async(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io, const TPM2_HANDLE *pcrList, size_t pcrListSize)
Definition: ifapi_eventlog.c:78
Definition: ifapi_eventlog.h:77
TPML_DIGEST_VALUES digests
Definition: ifapi_eventlog.h:80
IFAPI_EVENT_TYPE content_type
Definition: ifapi_eventlog.h:81
UINT32 recnum
Definition: ifapi_eventlog.h:78
IFAPI_EVENT_UNION content
Definition: ifapi_eventlog.h:82
bool verify
Definition: ifapi_eventlog.h:83
TPM2_HANDLE pcr
Definition: ifapi_eventlog.h:79
Definition: ifapi_eventlog.h:94
Definition: ifapi_eventlog_system.h:51
Definition: ifapi_ima_eventlog.h:45
Definition: ifapi_io.h:15
Definition: ifapi_eventlog.h:60
TPM2B_EVENT data
Definition: ifapi_eventlog.h:61
char * event
Definition: ifapi_eventlog.h:62
Definition: ifapi_eventlog.h:40
Definition: ifapi_eventlog.h:53
Definition: ifapi_eventlog.h:67
IFAPI_IMA_EVENT ima_event
Definition: ifapi_eventlog.h:69
IFAPI_FIRMWARE_EVENT firmware_event
Definition: ifapi_eventlog.h:70
IFAPI_TSS_EVENT tss_event
Definition: ifapi_eventlog.h:68
TPMS_EVENT_CELMGT cel_event
Definition: ifapi_eventlog.h:71
Definition: ifapi_eventlog.h:46