image.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright 2018-2019 NXP
  4. */
  5. #ifndef __CONTAINER_HEADER_H_
  6. #define __CONTAINER_HEADER_H_
  7. #include <linux/sizes.h>
  8. #include <linux/types.h>
  9. #define IV_MAX_LEN 32
  10. #define HASH_MAX_LEN 64
  11. #define CONTAINER_HDR_ALIGNMENT 0x400
  12. #define CONTAINER_HDR_EMMC_OFFSET 0
  13. #define CONTAINER_HDR_MMCSD_OFFSET SZ_32K
  14. #define CONTAINER_HDR_QSPI_OFFSET SZ_4K
  15. #define CONTAINER_HDR_NAND_OFFSET SZ_128M
  16. struct container_hdr {
  17. u8 version;
  18. u8 length_lsb;
  19. u8 length_msb;
  20. u8 tag;
  21. u32 flags;
  22. u16 sw_version;
  23. u8 fuse_version;
  24. u8 num_images;
  25. u16 sig_blk_offset;
  26. u16 reserved;
  27. } __packed;
  28. struct boot_img_t {
  29. u32 offset;
  30. u32 size;
  31. u64 dst;
  32. u64 entry;
  33. u32 hab_flags;
  34. u32 meta;
  35. u8 hash[HASH_MAX_LEN];
  36. u8 iv[IV_MAX_LEN];
  37. } __packed;
  38. struct signature_block_hdr {
  39. u8 version;
  40. u8 length_lsb;
  41. u8 length_msb;
  42. u8 tag;
  43. u16 srk_table_offset;
  44. u16 cert_offset;
  45. u16 blob_offset;
  46. u16 signature_offset;
  47. u32 reserved;
  48. } __packed;
  49. struct generate_key_blob_hdr {
  50. u8 version;
  51. u8 length_lsb;
  52. u8 length_msb;
  53. u8 tag;
  54. u8 flags;
  55. u8 size;
  56. u8 algorithm;
  57. u8 mode;
  58. } __packed;
  59. #endif