hre.h 761 B

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