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