1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2013 4 * Reinhard Pfau, Guntermann & Drunck GmbH, reinhard.pfau@gdsys.cc 5 */ 6 7 #ifndef __HRE_H 8 #define __HRE_H 9 10 struct key_program { 11 uint32_t magic; 12 uint32_t code_crc; 13 uint32_t code_size; 14 uint8_t code[]; 15 }; 16 17 struct h_reg { 18 bool valid; 19 uint8_t digest[20]; 20 }; 21 22 /* CCDM specific contants */ 23 enum { 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 34 int hre_verify_program(struct key_program *prg); 35 int hre_run_program(struct udevice *tpm, const uint8_t *code, size_t code_size); 36 37 #endif /* __HRE_H */ 38