aboutsummaryrefslogtreecommitdiff
path: root/services/std_svc/drtm/drtm_measurements.h
blob: 127df9f7969aec3823aaca1d6c62c794cedb6122 (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
/*
 * Copyright (c) 2021 Arm Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier:    BSD-3-Clause
 *
 */
#ifndef DRTM_MEASUREMENTS_H
#define DRTM_MEASUREMENTS_H

#include <stdint.h>

#include <lib/tpm/tpm_log.h>

#include "drtm_main.h"

#define DRTM_EVENT_LOG_INIT_SIZE     ((size_t)(768))

#if !defined(DRTM_SHA_ALG)
#error "The DRTM service requires definition of the DRTM_SHA_ALG macro"
#else
#define COMBINE(a, b) a ## b
#define EXPAND_AND_COMBINE(a, b) COMBINE(a, b)
#define DRTM_TPM_HASH_ALG EXPAND_AND_COMBINE(TPM_ALG_SHA, DRTM_SHA_ALG)

#if DRTM_SHA_ALG == 256
#define DRTM_TPM_HASH_ALG_DSIZE  32
#elif DRTM_SHA_ALG == 384
#define DRTM_TPM_HASH_ALG_DSIZE  48
#elif DRTM_SHA_ALG == 512
#define DRTM_TPM_HASH_ALG_DSIZE  64
#endif

#endif


struct drtm_event_log {
	tpm_log_info_t tpm_log_info;
	uint32_t tpm_log_mem[DRTM_EVENT_LOG_INIT_SIZE / sizeof(uint32_t)];
};
/* Opaque / encapsulated type. */
typedef struct drtm_event_log drtm_event_log_t;


int drtm_measurements_init(void);
enum drtm_retc drtm_take_measurements(const struct_drtm_dl_args *a,
                              drtm_event_log_t *log);
void drtm_serialise_event_log(char *dst, const drtm_event_log_t *src_log,
                              size_t *event_log_size_out);

#endif /* DRTM_MEASUREMENTS_H */