2018-05-06 21:58:06 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
2017-02-22 15:07:23 +00:00
|
|
|
/*
|
|
|
|
* (C) Copyright 2013
|
|
|
|
* Reinhard Pfau, Guntermann & Drunck GmbH, reinhard.pfau@gdsys.cc
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __HRE_H
|
|
|
|
#define __HRE_H
|
|
|
|
|
|
|
|
struct key_program {
|
|
|
|
uint32_t magic;
|
|
|
|
uint32_t code_crc;
|
|
|
|
uint32_t code_size;
|
|
|
|
uint8_t code[];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct h_reg {
|
|
|
|
bool valid;
|
|
|
|
uint8_t digest[20];
|
|
|
|
};
|
|
|
|
|
|
|
|
/* CCDM specific contants */
|
|
|
|
enum {
|
|
|
|
/* NV indices */
|
|
|
|
NV_COMMON_DATA_INDEX = 0x40000001,
|
|
|
|
/* magics for key blob chains */
|
|
|
|
MAGIC_KEY_PROGRAM = 0x68726500,
|
|
|
|
MAGIC_HMAC = 0x68616300,
|
|
|
|
MAGIC_END_OF_CHAIN = 0x00000000,
|
|
|
|
/* sizes */
|
|
|
|
NV_COMMON_DATA_MIN_SIZE = 3 * sizeof(uint64_t) + 2 * sizeof(uint16_t),
|
|
|
|
};
|
|
|
|
|
|
|
|
int hre_verify_program(struct key_program *prg);
|
2018-11-18 21:22:27 +00:00
|
|
|
int hre_run_program(struct udevice *tpm, const uint8_t *code, size_t code_size);
|
2017-02-22 15:07:23 +00:00
|
|
|
|
|
|
|
#endif /* __HRE_H */
|