tpm2-tss 4.0.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
22typedef 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 */
31typedef 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 */
40typedef struct {
41 UINT16 major; /* The major version */
42 UINT16 minor; /* The minor version */
44
45/* Definition of TPMU_CAPABILITIES Union <OUT> */
46typedef union {
47 TPMS_CEL_VERSION cel_version;
48 TPMS_EMPTY firmware_end;
49 UINT64 cel_timestamp;
51
52/* Definition of TPMS_EVENT_CELMGT Structure*/
53typedef struct {
54 TPMI_CELMGTTYPE type; /* type of the cel event structure */
55 TPMU_CELMGT data; /* the type-specific cel event information */
57
60typedef struct {
61 TPM2B_EVENT data;
62 char *event;
64
74
77typedef struct IFAPI_EVENT {
78 UINT32 recnum;
79 TPM2_HANDLE pcr;
80 TPML_DIGEST_VALUES digests;
81 IFAPI_EVENT_TYPE content_type;
83 bool verify;
86
87enum 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
94typedef 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
106TSS2_RC
107ifapi_eventlog_initialize(
108 IFAPI_EVENTLOG *eventlog,
109 const char *log_dir,
110 const char *firmware_log_file,
111 const char *ima_log_file);
112
113TSS2_RC
114ifapi_eventlog_get_async(
115 IFAPI_EVENTLOG *eventlog,
116 IFAPI_IO *io,
117 const TPM2_HANDLE *pcrList,
118 size_t pcrListSize);
119
120TSS2_RC
121ifapi_eventlog_get_finish(
122 IFAPI_EVENTLOG *eventlog,
123 IFAPI_IO *io,
124 char **log);
125
126TSS2_RC
127ifapi_eventlog_append_check(
128 IFAPI_EVENTLOG *eventlog,
129 IFAPI_IO *io);
130
131TSS2_RC
132ifapi_eventlog_append_finish(
133 IFAPI_EVENTLOG *eventlog,
134 IFAPI_IO *io,
135 const IFAPI_EVENT *event);
136
137void
138ifapi_cleanup_event(
139 IFAPI_EVENT * event);
140
141#endif /* IFAPI_EVENTLOG_H */
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