Home | History | Annotate | Download | only in a38x
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * (C) Copyright 2013
      4  * Reinhard Pfau, Guntermann & Drunck GmbH, reinhard.pfau (at) 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(const uint8_t *code, size_t code_size);
     36 
     37 #endif /* __HRE_H */
     38