blob: 1e968d7e553711f9b2a0aa65b7b7ba7e70f535d2 [file] [log] [blame]
David Brown22a6fe32017-01-10 10:40:43 -07001# BOOT_IMG_MAGIC = 0x12344321
2BOOT_IMG_MAGIC = [ 0xf395c277, 0x7fefd260, 0x0f505235, 0x8079b62c ]
3IMAGE_MAGIC = 0x96f3b83c
4IMAGE_MAGIC_NONE = 0xffffffff
5
6#
7# Image header flags.
8#
9IMAGE_F_PIC = 0x00000001
10IMAGE_F_SHA256 = 0x00000002 # Image contains hash TLV
11IMAGE_F_PKCS15_RSA2048_SHA256 = 0x00000004 # PKCS15 w/RSA and SHA
12IMAGE_F_ECDSA224_SHA256 = 0x00000008 # ECD
13IMAGE_HEADER_SIZE = 32
14
15# Digest sizes
16SHA256_DIGEST_SIZE = 32
17
18# Signature sizes
19RSA_SIZE = 256
20ECDSA_SIZE = 68
21
22#
23# Image trailer TLV types.
24#
25IMAGE_TLV_SHA256 = 1 # SHA256 of image hdr and body
26IMAGE_TLV_RSA2048 = 2 # RSA2048 of hash output
27IMAGE_TLV_ECDSA224 = 3 # ECDSA of hash output
28
29
30OFFSET_VECTOR_TABLE = 0x20
31OFFSET_IH_MAGIC = 0
32OFFSET_IH_TLV_SIZE = 4
33OFFSET_IH_KEY_ID = 6
34OFFSET_IH_PAD1 = 7
35OFFSET_IH_HDR_SIZE = 8
36OFFSET_IH_PAD2 = 10
37OFFSET_IH_IMG_SIZE = 12
38OFFSET_IH_FLAGS = 16
39OFFSET_IH_VER_MAJOR = 20
40OFFSET_IH_VER_MINOR = 21
41OFFSET_IH_REVISION = 22
42OFFSET_IH_BUILD_NUM = 24
43OFFSET_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#};