/* SPDX-License-Identifier: GPL-2.0+ */ /* * (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); int hre_run_program(struct udevice *tpm, const uint8_t *code, size_t code_size); #endif /* __HRE_H */