import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / masp / asf / asf_inc / sec_sign_extension.h
1 #ifndef _SEC_SIGN_EXTENSION_H
2 #define _SEC_SIGN_EXTENSION_H
3
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)
8
9 #define CRYPTO_SIZE_UNKNOWN 0
10
11 typedef enum
12 {
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,
20
21 SEC_EXT_HDR_END_MARK = 0xFFFFFFFF
22 } SEC_EXT_HEADER_TYPE;
23
24 typedef enum
25 {
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,
31
32 } SEC_CRYPTO_HASH_TYPE;
33
34 typedef enum
35 {
36 SEC_CRYPTO_SIG_UNKNOWN = 0,
37 SEC_CRYPTO_SIG_RSA512 = 1,
38 SEC_CRYPTO_SIG_RSA1024 = 2,
39 SEC_CRYPTO_SIG_RSA2048 = 3,
40
41 } SEC_CRYPTO_SIGNATURE_TYPE;
42
43 typedef enum
44 {
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,
50
51 } SEC_CRYPTO_ENCRYPTION_TYPE;
52
53 typedef enum
54 {
55 SEC_SIZE_HASH_MD5 = 16,
56 SEC_SIZE_HASH_SHA1 = 20,
57 SEC_SIZE_HASH_SHA256 = 32,
58 SEC_SIZE_HASH_SHA512 = 64,
59
60 } SEC_CRYPTO_HASH_SIZE_BYTES;
61
62 typedef enum
63 {
64 SEC_SIZE_SIG_RSA512 = 64,
65 SEC_SIZE_SIG_RSA1024 = 128,
66 SEC_SIZE_SIG_RSA2048 = 256,
67
68 } SEC_CRYPTO_SIGNATURE_SIZE_BYTES;
69
70
71 typedef enum
72 {
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,
81
82 } SEC_FRAG_CHUNK_SIZE_BYTES;
83
84
85 typedef struct _SEC_EXTENSTION_CRYPTO
86 {
87 unsigned int magic;
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;
94
95 typedef struct _SEC_FRAGMENT_CFG
96 {
97 unsigned int magic;
98 unsigned int ext_type;
99 unsigned int chunk_size;
100 unsigned int frag_count;
101 } SEC_FRAGMENT_CFG;
102
103 typedef struct _SEC_EXTENSTION_HASH_ONLY
104 {
105 unsigned int magic;
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;
112
113
114 typedef struct _SEC_EXTENSTION_HASH_ONLY_64
115 {
116 unsigned int magic;
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;
124
125 typedef struct _SEC_EXTENSTION_HASH_SIG
126 {
127 unsigned int magic;
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;
135
136 typedef struct _SEC_EXTENSTION_END_MARK
137 {
138 unsigned int magic;
139 unsigned int ext_type;
140 } SEC_EXTENSTION_END_MARK;
141
142 typedef struct _SEC_IMG_EXTENSTION_SET
143 {
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;
150
151 #endif
152