blob: da983aa452a96f1ebc4e7ab210a18fc5a4ba8dd7 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Dirk Eibachfb605942017-02-22 16:07:23 +01002/*
3 * (C) Copyright 2013
4 * Reinhard Pfau, Guntermann & Drunck GmbH, reinhard.pfau@gdsys.cc
Dirk Eibachfb605942017-02-22 16:07:23 +01005 */
6
7#ifndef __HRE_H
8#define __HRE_H
9
10struct key_program {
11 uint32_t magic;
12 uint32_t code_crc;
13 uint32_t code_size;
14 uint8_t code[];
15};
16
17struct h_reg {
18 bool valid;
19 uint8_t digest[20];
20};
21
22/* CCDM specific contants */
23enum {
24 /* NV indices */
25 NV_COMMON_DATA_INDEX = 0x40000001,
26 /* magics for key blob chains */
27 MAGIC_KEY_PROGRAM = 0x68726500,
28 MAGIC_HMAC = 0x68616300,
29 MAGIC_END_OF_CHAIN = 0x00000000,
30 /* sizes */
31 NV_COMMON_DATA_MIN_SIZE = 3 * sizeof(uint64_t) + 2 * sizeof(uint16_t),
32};
33
34int hre_verify_program(struct key_program *prg);
Simon Glass8ceca1d2018-11-18 14:22:27 -070035int hre_run_program(struct udevice *tpm, const uint8_t *code, size_t code_size);
Dirk Eibachfb605942017-02-22 16:07:23 +010036
37#endif /* __HRE_H */