1 #ifndef _SEC_SIGN_EXTENSION_H
2 #define _SEC_SIGN_EXTENSION_H
4 #define MAX_VERITY_COUNT 32
5 #define SEC_EXTENSION_MAGIC (0x7A797A79)
6 #define SEC_EXTENSION_MAGIC_V4 (0x7B797B79)
7 #define SEC_EXTENSION_HEADER_MAGIC (0x45454545)
9 #define CRYPTO_SIZE_UNKNOWN 0
13 SEC_EXT_HDR_UNKNOWN
= 0,
14 SEC_EXT_HDR_CRYPTO
= 1,
15 SEC_EXT_HDR_FRAG_CFG
= 2,
16 SEC_EXT_HDR_HASH_ONLY
= 3,
17 SEC_EXT_HDR_HASH_SIG
= 4,
18 SEC_EXT_HDR_SPARSE
= 5,
19 SEC_EXT_HDR_HASH_ONLY_64
= 6,
21 SEC_EXT_HDR_END_MARK
= 0xFFFFFFFF
22 } SEC_EXT_HEADER_TYPE
;
26 SEC_CRYPTO_HASH_UNKNOWN
= 0,
27 SEC_CRYPTO_HASH_MD5
= 1,
28 SEC_CRYPTO_HASH_SHA1
= 2,
29 SEC_CRYPTO_HASH_SHA256
= 3,
30 SEC_CRYPTO_HASH_SHA512
= 4,
32 } SEC_CRYPTO_HASH_TYPE
;
36 SEC_CRYPTO_SIG_UNKNOWN
= 0,
37 SEC_CRYPTO_SIG_RSA512
= 1,
38 SEC_CRYPTO_SIG_RSA1024
= 2,
39 SEC_CRYPTO_SIG_RSA2048
= 3,
41 } SEC_CRYPTO_SIGNATURE_TYPE
;
45 SEC_CRYPTO_ENC_UNKNOWN
= 0,
46 SEC_CRYPTO_ENC_RC4
= 1,
47 SEC_CRYPTO_ENC_AES128
= 2,
48 SEC_CRYPTO_ENC_AES192
= 3,
49 SEC_CRYPTO_ENC_AES256
= 4,
51 } SEC_CRYPTO_ENCRYPTION_TYPE
;
55 SEC_SIZE_HASH_MD5
= 16,
56 SEC_SIZE_HASH_SHA1
= 20,
57 SEC_SIZE_HASH_SHA256
= 32,
58 SEC_SIZE_HASH_SHA512
= 64,
60 } SEC_CRYPTO_HASH_SIZE_BYTES
;
64 SEC_SIZE_SIG_RSA512
= 64,
65 SEC_SIZE_SIG_RSA1024
= 128,
66 SEC_SIZE_SIG_RSA2048
= 256,
68 } SEC_CRYPTO_SIGNATURE_SIZE_BYTES
;
73 SEC_CHUNK_SIZE_ZERO
= 0,
74 SEC_CHUNK_SIZE_UNKNOWN
= 0x00100000,
75 SEC_CHUNK_SIZE_1M
= 0x00100000,
76 SEC_CHUNK_SIZE_2M
= 0x00200000,
77 SEC_CHUNK_SIZE_4M
= 0x00400000,
78 SEC_CHUNK_SIZE_8M
= 0x00800000,
79 SEC_CHUNK_SIZE_16M
= 0x01000000,
80 SEC_CHUNK_SIZE_32M
= 0x02000000,
82 } SEC_FRAG_CHUNK_SIZE_BYTES
;
85 typedef struct _SEC_EXTENSTION_CRYPTO
88 unsigned int ext_type
;
89 unsigned char hash_type
;
90 unsigned char sig_type
;
91 unsigned char enc_type
;
92 unsigned char reserved
;
93 } SEC_EXTENSTION_CRYPTO
;
95 typedef struct _SEC_FRAGMENT_CFG
98 unsigned int ext_type
;
99 unsigned int chunk_size
;
100 unsigned int frag_count
;
103 typedef struct _SEC_EXTENSTION_HASH_ONLY
106 unsigned int ext_type
;
107 unsigned int sub_type
; /* hash type */
108 unsigned int hash_offset
;
109 unsigned int hash_len
;
110 unsigned char hash_data
[];
111 } SEC_EXTENSTION_HASH_ONLY
;
114 typedef struct _SEC_EXTENSTION_HASH_ONLY_64
117 unsigned int ext_type
;
118 unsigned int sub_type
; /* hash type */
119 unsigned int padding
;
120 unsigned long long hash_offset_64
;
121 unsigned long long hash_len_64
;
122 unsigned char hash_data
[];
123 } SEC_EXTENSTION_HASH_ONLY_64
;
125 typedef struct _SEC_EXTENSTION_HASH_SIG
128 unsigned int ext_type
;
129 unsigned int sig_type
; /* sig type */
130 unsigned int hash_type
; /* hash type */
131 unsigned int auth_offset
;
132 unsigned int auth_len
;
133 unsigned char auth_data
[]; /* sig + hash */
134 } SEC_EXTENSTION_HASH_SIG
;
136 typedef struct _SEC_EXTENSTION_END_MARK
139 unsigned int ext_type
;
140 } SEC_EXTENSTION_END_MARK
;
142 typedef struct _SEC_IMG_EXTENSTION_SET
144 SEC_EXTENSTION_CRYPTO
*crypto
;
145 SEC_FRAGMENT_CFG
*frag
;
146 SEC_EXTENSTION_END_MARK
*end
;
147 SEC_EXTENSTION_HASH_ONLY
**hash_only
;
148 SEC_EXTENSTION_HASH_ONLY_64
**hash_only_64
;
149 } SEC_IMG_EXTENSTION_SET
;