tpm2-tss 4.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.h> // for json_object
10#include <stdbool.h> // for bool
11#include <stddef.h> // for size_t
12
13#include "ifapi_eventlog_system.h" // for IFAPI_FIRMWARE_EVENT
14#include "ifapi_ima_eventlog.h" // for IFAPI_IMA_EVENT
15#include "ifapi_io.h" // for IFAPI_IO
16#include "tss2_common.h" // for TSS2_RC, UINT32, UINT16, UINT64
17#include "tss2_tpm2_types.h" // for TPM2_HANDLE, TPM2B_EVENT, TPM2_MA...
18
19#define CONTENT_TYPE "content_type"
20#define CONTENT "content"
21
24typedef UINT32 IFAPI_EVENT_TYPE;
25#define IFAPI_TSS_EVENT_TAG 2
26#define IFAPI_IMA_EVENT_TAG 3
27#define IFAPI_IMA_NG_EVENT_TAG 4
28#define IFAPI_IMA_SIG_EVENT_TAG 5
29#define IFAPI_PC_CLIENT 6
30#define IFAPI_CEL_TAG \
31 8
33/* Definition of TPMI_CELMGTTYPE Type */
34typedef UINT32 TPMI_CELMGTTYPE;
35#define CEL_VERSION 1
36#define FIRMWARE_END 2
37#define CEL_TIMESTAMP 80
38#define STATE_TRANS 81
39
40/* Structures of canonical event log format. */
41
42/* Definition of TPMS_CEL_VERSION Structure */
43typedef struct {
44 UINT16 major; /* The major version */
45 UINT16 minor; /* The minor version */
47
48/* Definition of TPMU_CAPABILITIES Union <OUT> */
49typedef union {
50 TPMS_CEL_VERSION cel_version;
51 TPMS_EMPTY firmware_end;
52 UINT64 cel_timestamp;
54
55/* Definition of TPMS_EVENT_CELMGT Structure*/
56typedef struct {
57 TPMI_CELMGTTYPE type; /* type of the cel event structure */
58 TPMU_CELMGT data; /* the type-specific cel event information */
60
63typedef struct {
64 TPM2B_EVENT data;
65 char *event;
67
77
80typedef struct IFAPI_EVENT {
81 UINT32 recnum;
82 TPM2_HANDLE pcr;
83 TPML_DIGEST_VALUES digests;
84 IFAPI_EVENT_TYPE content_type;
86 bool verify;
89
92typedef struct {
93 TPMT_SIG_SCHEME sig_scheme;
94 TPMS_ATTEST attest;
96
97enum IFAPI_EVENTLOG_STATE {
98 IFAPI_EVENTLOG_STATE_INIT = 0,
99 IFAPI_EVENTLOG_STATE_READING,
100 IFAPI_EVENTLOG_STATE_APPENDING,
101 IFAPI_EVENTLOG_STATE_WRITING
102};
103
104typedef struct IFAPI_EVENTLOG {
105 enum IFAPI_EVENTLOG_STATE state;
106 char *log_dir;
107 const char *firmware_log_file;
108 const char *ima_log_file;
109 struct IFAPI_EVENT event;
110 TPM2_HANDLE pcrList[TPM2_MAX_PCRS];
111 size_t pcrListSize;
112 size_t pcrListIdx;
113 json_object *log;
115
116TSS2_RC
117ifapi_eventlog_initialize(IFAPI_EVENTLOG *eventlog,
118 const char *log_dir,
119 const char *firmware_log_file,
120 const char *ima_log_file);
121
122TSS2_RC
124 IFAPI_IO *io,
125 const TPM2_HANDLE *pcrList,
126 size_t pcrListSize);
127
128TSS2_RC
129ifapi_eventlog_get_finish(IFAPI_EVENTLOG *eventlog,
130 FAPI_QUOTE_INFO *fapi_quote_info,
131 IFAPI_IO *io,
132 char **log);
133
134TSS2_RC
136
137TSS2_RC
139
141
142#endif /* IFAPI_EVENTLOG_H */
TSS2_RC ifapi_eventlog_append_finish(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io, const IFAPI_EVENT *event)
Definition ifapi_eventlog.c:399
void ifapi_cleanup_event(IFAPI_EVENT *event)
Definition ifapi_eventlog.c:481
TSS2_RC ifapi_eventlog_append_check(IFAPI_EVENTLOG *eventlog, IFAPI_IO *io)
Definition ifapi_eventlog.c:330
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:92
TPMT_SIG_SCHEME sig_scheme
Definition ifapi_eventlog.h:93
TPMS_ATTEST attest
Definition ifapi_eventlog.h:94
Definition ifapi_eventlog.h:80
TPML_DIGEST_VALUES digests
Definition ifapi_eventlog.h:83
IFAPI_EVENT_TYPE content_type
Definition ifapi_eventlog.h:84
UINT32 recnum
Definition ifapi_eventlog.h:81
IFAPI_EVENT_UNION content
Definition ifapi_eventlog.h:85
bool verify
Definition ifapi_eventlog.h:86
TPM2_HANDLE pcr
Definition ifapi_eventlog.h:82
Definition ifapi_eventlog.h:104
Definition ifapi_eventlog_system.h:41
Definition ifapi_ima_eventlog.h:55
Definition ifapi_io.h:17
Definition ifapi_eventlog.h:63
TPM2B_EVENT data
Definition ifapi_eventlog.h:64
char * event
Definition ifapi_eventlog.h:65
Definition ifapi_eventlog.h:43
Definition ifapi_eventlog.h:56
Definition ifapi_eventlog.h:70
IFAPI_IMA_EVENT ima_event
Definition ifapi_eventlog.h:72
IFAPI_FIRMWARE_EVENT firmware_event
Definition ifapi_eventlog.h:73
IFAPI_TSS_EVENT tss_event
Definition ifapi_eventlog.h:71
TPMS_EVENT_CELMGT cel_event
Definition ifapi_eventlog.h:74
Definition ifapi_eventlog.h:49