summaryrefslogtreecommitdiff
path: root/src/include/tcsem.h
blob: 4b1f215be12b74904ecaf6cc106b32d27d7d9820 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

/*
 * Licensed Materials - Property of IBM
 *
 * trousers - An open source TCG Software Stack
 *
 * (C) Copyright International Business Machines Corp. 2004-2006
 *
 */

#ifndef _TCSEM_H_
#define _TCSEM_H_

struct ext_log_source {
        int (*open)(void *, FILE **);
        TSS_RESULT (*get_entries_by_pcr)(FILE *, UINT32, UINT32, UINT32 *, TSS_PCR_EVENT **);
        TSS_RESULT (*get_entry)(FILE *, UINT32, UINT32 *, TSS_PCR_EVENT **);
        int (*close)(FILE *);
};

struct event_wrapper {
	TSS_PCR_EVENT event;
	struct event_wrapper *next;
};

struct event_log {
	MUTEX_DECLARE(lock);
	struct ext_log_source *firmware_source;
	struct ext_log_source *kernel_source;
	struct event_wrapper **lists;
};

/* include the compiled-in log sources and struct references here */
#include "imaem.h"
#include "biosem.h"

#ifdef EVLOG_SOURCE_IMA
#define EVLOG_IMA_SOURCE	&ima_source
#else
#define EVLOG_IMA_SOURCE	NULL
#endif

#ifdef EVLOG_SOURCE_BIOS
#define EVLOG_BIOS_SOURCE	&bios_source
#else
#define EVLOG_BIOS_SOURCE	NULL
#endif


TSS_RESULT event_log_init();
TSS_RESULT event_log_final();
TSS_RESULT copy_pcr_event(TSS_PCR_EVENT *, TSS_PCR_EVENT *);
TSS_RESULT event_log_add(TSS_PCR_EVENT *, UINT32 *);
TSS_PCR_EVENT *get_pcr_event(UINT32, UINT32);
UINT32 get_num_events(UINT32);
TSS_PCR_EVENT *concat_pcr_events(TSS_PCR_EVENT **, UINT32, TSS_PCR_EVENT *, UINT32);
UINT32 get_pcr_event_size(TSS_PCR_EVENT *);
void free_external_events(UINT32, TSS_PCR_EVENT *);

extern struct event_log *tcs_event_log;

#endif