David Brown | 22a6fe3 | 2017-01-10 10:40:43 -0700 | [diff] [blame^] | 1 | # BOOT_IMG_MAGIC = 0x12344321 |
| 2 | BOOT_IMG_MAGIC = [ 0xf395c277, 0x7fefd260, 0x0f505235, 0x8079b62c ] |
| 3 | IMAGE_MAGIC = 0x96f3b83c |
| 4 | IMAGE_MAGIC_NONE = 0xffffffff |
| 5 | |
| 6 | # |
| 7 | # Image header flags. |
| 8 | # |
| 9 | IMAGE_F_PIC = 0x00000001 |
| 10 | IMAGE_F_SHA256 = 0x00000002 # Image contains hash TLV |
| 11 | IMAGE_F_PKCS15_RSA2048_SHA256 = 0x00000004 # PKCS15 w/RSA and SHA |
| 12 | IMAGE_F_ECDSA224_SHA256 = 0x00000008 # ECD |
| 13 | IMAGE_HEADER_SIZE = 32 |
| 14 | |
| 15 | # Digest sizes |
| 16 | SHA256_DIGEST_SIZE = 32 |
| 17 | |
| 18 | # Signature sizes |
| 19 | RSA_SIZE = 256 |
| 20 | ECDSA_SIZE = 68 |
| 21 | |
| 22 | # |
| 23 | # Image trailer TLV types. |
| 24 | # |
| 25 | IMAGE_TLV_SHA256 = 1 # SHA256 of image hdr and body |
| 26 | IMAGE_TLV_RSA2048 = 2 # RSA2048 of hash output |
| 27 | IMAGE_TLV_ECDSA224 = 3 # ECDSA of hash output |
| 28 | |
| 29 | |
| 30 | OFFSET_VECTOR_TABLE = 0x20 |
| 31 | OFFSET_IH_MAGIC = 0 |
| 32 | OFFSET_IH_TLV_SIZE = 4 |
| 33 | OFFSET_IH_KEY_ID = 6 |
| 34 | OFFSET_IH_PAD1 = 7 |
| 35 | OFFSET_IH_HDR_SIZE = 8 |
| 36 | OFFSET_IH_PAD2 = 10 |
| 37 | OFFSET_IH_IMG_SIZE = 12 |
| 38 | OFFSET_IH_FLAGS = 16 |
| 39 | OFFSET_IH_VER_MAJOR = 20 |
| 40 | OFFSET_IH_VER_MINOR = 21 |
| 41 | OFFSET_IH_REVISION = 22 |
| 42 | OFFSET_IH_BUILD_NUM = 24 |
| 43 | OFFSET_IH_PAD3 = 28 |
| 44 | #struct image_version { uint8_t iv_major; uint8_t iv_minor; uint16_t iv_revision; |
| 45 | # uint32_t iv_build_num; |
| 46 | #}; |
| 47 | # |
| 48 | #/** Image header. All fields are in little endian byte order. */ |
| 49 | #struct image_header { |
| 50 | # uint32_t ih_magic; |
| 51 | # uint16_t ih_tlv_size; /* Trailing TLVs */ |
| 52 | # uint8_t ih_key_id; |
| 53 | # uint8_t _pad1; |
| 54 | # uint16_t ih_hdr_size; |
| 55 | # uint16_t _pad2; |
| 56 | # uint32_t ih_img_size; /* Does not include header. */ |
| 57 | # uint32_t ih_flags; |
| 58 | # struct image_version ih_ver; |
| 59 | # uint32_t _pad3; |
| 60 | #}; |
| 61 | # |
| 62 | #/** Image trailer TLV format. All fields in little endian. */ |
| 63 | #struct image_tlv { |
| 64 | # uint8_t it_type; |
| 65 | # uint8_t _pad; |
| 66 | # uint16_t it_len; |
| 67 | #}; |