| /* 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 */ |