xref: /rk3399_ARM-atf/drivers/auth/tbbr/tbbr_cot_bl2.c (revision a8eadc51a32a30fceb64f534c378ba66b876e026)
1ad43c49eSManish V Badarkhe /*
2*a8eadc51SGovindraj Raja  * Copyright (c) 2015-2023, Arm Limited and Contributors. All rights reserved.
3ad43c49eSManish V Badarkhe  *
4ad43c49eSManish V Badarkhe  * SPDX-License-Identifier: BSD-3-Clause
5ad43c49eSManish V Badarkhe  */
6ad43c49eSManish V Badarkhe 
7ad43c49eSManish V Badarkhe #include <stddef.h>
8ad43c49eSManish V Badarkhe 
9*a8eadc51SGovindraj Raja #include <mbedtls/version.h>
10ad43c49eSManish V Badarkhe 
11ad43c49eSManish V Badarkhe #include <drivers/auth/auth_mod.h>
12ad43c49eSManish V Badarkhe #include <drivers/auth/tbbr_cot_common.h>
13*a8eadc51SGovindraj Raja 
14ad43c49eSManish V Badarkhe #if USE_TBBR_DEFS
15ad43c49eSManish V Badarkhe #include <tools_share/tbbr_oid.h>
16ad43c49eSManish V Badarkhe #else
17ad43c49eSManish V Badarkhe #include <platform_oid.h>
18ad43c49eSManish V Badarkhe #endif
19ad43c49eSManish V Badarkhe 
20*a8eadc51SGovindraj Raja #include <platform_def.h>
21*a8eadc51SGovindraj Raja 
22ad43c49eSManish V Badarkhe static unsigned char soc_fw_hash_buf[HASH_DER_LEN];
23ad43c49eSManish V Badarkhe static unsigned char tos_fw_hash_buf[HASH_DER_LEN];
24ad43c49eSManish V Badarkhe static unsigned char tos_fw_extra1_hash_buf[HASH_DER_LEN];
25ad43c49eSManish V Badarkhe static unsigned char tos_fw_extra2_hash_buf[HASH_DER_LEN];
26ad43c49eSManish V Badarkhe static unsigned char trusted_world_pk_buf[PK_DER_LEN];
27ad43c49eSManish V Badarkhe static unsigned char non_trusted_world_pk_buf[PK_DER_LEN];
28ad43c49eSManish V Badarkhe static unsigned char content_pk_buf[PK_DER_LEN];
29ad43c49eSManish V Badarkhe static unsigned char soc_fw_config_hash_buf[HASH_DER_LEN];
30ad43c49eSManish V Badarkhe static unsigned char tos_fw_config_hash_buf[HASH_DER_LEN];
31ad43c49eSManish V Badarkhe static unsigned char nt_fw_config_hash_buf[HASH_DER_LEN];
3268758dd6SManish Pandey #if defined(SPD_spmd)
3368758dd6SManish Pandey static unsigned char sp_pkg_hash_buf[MAX_SP_IDS][HASH_DER_LEN];
3468758dd6SManish Pandey #endif /* SPD_spmd */
35ad43c49eSManish V Badarkhe 
36ad43c49eSManish V Badarkhe static auth_param_type_desc_t non_trusted_nv_ctr = AUTH_PARAM_TYPE_DESC(
37ad43c49eSManish V Badarkhe 		AUTH_PARAM_NV_CTR, NON_TRUSTED_FW_NVCOUNTER_OID);
38ad43c49eSManish V Badarkhe static auth_param_type_desc_t trusted_world_pk = AUTH_PARAM_TYPE_DESC(
39ad43c49eSManish V Badarkhe 		AUTH_PARAM_PUB_KEY, TRUSTED_WORLD_PK_OID);
40ad43c49eSManish V Badarkhe static auth_param_type_desc_t non_trusted_world_pk = AUTH_PARAM_TYPE_DESC(
41ad43c49eSManish V Badarkhe 		AUTH_PARAM_PUB_KEY, NON_TRUSTED_WORLD_PK_OID);
42ad43c49eSManish V Badarkhe static auth_param_type_desc_t scp_fw_content_pk = AUTH_PARAM_TYPE_DESC(
43ad43c49eSManish V Badarkhe 		AUTH_PARAM_PUB_KEY, SCP_FW_CONTENT_CERT_PK_OID);
44ad43c49eSManish V Badarkhe static auth_param_type_desc_t soc_fw_content_pk = AUTH_PARAM_TYPE_DESC(
45ad43c49eSManish V Badarkhe 		AUTH_PARAM_PUB_KEY, SOC_FW_CONTENT_CERT_PK_OID);
46ad43c49eSManish V Badarkhe static auth_param_type_desc_t tos_fw_content_pk = AUTH_PARAM_TYPE_DESC(
47ad43c49eSManish V Badarkhe 		AUTH_PARAM_PUB_KEY, TRUSTED_OS_FW_CONTENT_CERT_PK_OID);
48ad43c49eSManish V Badarkhe static auth_param_type_desc_t nt_fw_content_pk = AUTH_PARAM_TYPE_DESC(
49ad43c49eSManish V Badarkhe 		AUTH_PARAM_PUB_KEY, NON_TRUSTED_FW_CONTENT_CERT_PK_OID);
50ad43c49eSManish V Badarkhe static auth_param_type_desc_t scp_fw_hash = AUTH_PARAM_TYPE_DESC(
51ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, SCP_FW_HASH_OID);
52ad43c49eSManish V Badarkhe static auth_param_type_desc_t soc_fw_hash = AUTH_PARAM_TYPE_DESC(
53ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, SOC_AP_FW_HASH_OID);
54ad43c49eSManish V Badarkhe static auth_param_type_desc_t soc_fw_config_hash = AUTH_PARAM_TYPE_DESC(
55ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, SOC_FW_CONFIG_HASH_OID);
56ad43c49eSManish V Badarkhe static auth_param_type_desc_t tos_fw_hash = AUTH_PARAM_TYPE_DESC(
57ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, TRUSTED_OS_FW_HASH_OID);
58ad43c49eSManish V Badarkhe static auth_param_type_desc_t tos_fw_config_hash = AUTH_PARAM_TYPE_DESC(
59ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, TRUSTED_OS_FW_CONFIG_HASH_OID);
60ad43c49eSManish V Badarkhe static auth_param_type_desc_t tos_fw_extra1_hash = AUTH_PARAM_TYPE_DESC(
61ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, TRUSTED_OS_FW_EXTRA1_HASH_OID);
62ad43c49eSManish V Badarkhe static auth_param_type_desc_t tos_fw_extra2_hash = AUTH_PARAM_TYPE_DESC(
63ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, TRUSTED_OS_FW_EXTRA2_HASH_OID);
64ad43c49eSManish V Badarkhe static auth_param_type_desc_t nt_world_bl_hash = AUTH_PARAM_TYPE_DESC(
65ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, NON_TRUSTED_WORLD_BOOTLOADER_HASH_OID);
66ad43c49eSManish V Badarkhe static auth_param_type_desc_t nt_fw_config_hash = AUTH_PARAM_TYPE_DESC(
67ad43c49eSManish V Badarkhe 		AUTH_PARAM_HASH, NON_TRUSTED_FW_CONFIG_HASH_OID);
6868758dd6SManish Pandey #if defined(SPD_spmd)
6968758dd6SManish Pandey static auth_param_type_desc_t sp_pkg1_hash = AUTH_PARAM_TYPE_DESC(
7068758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG1_HASH_OID);
7168758dd6SManish Pandey static auth_param_type_desc_t sp_pkg2_hash = AUTH_PARAM_TYPE_DESC(
7268758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG2_HASH_OID);
7368758dd6SManish Pandey static auth_param_type_desc_t sp_pkg3_hash = AUTH_PARAM_TYPE_DESC(
7468758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG3_HASH_OID);
7568758dd6SManish Pandey static auth_param_type_desc_t sp_pkg4_hash = AUTH_PARAM_TYPE_DESC(
7668758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG4_HASH_OID);
7768758dd6SManish Pandey static auth_param_type_desc_t sp_pkg5_hash = AUTH_PARAM_TYPE_DESC(
7868758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG5_HASH_OID);
7968758dd6SManish Pandey static auth_param_type_desc_t sp_pkg6_hash = AUTH_PARAM_TYPE_DESC(
8068758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG6_HASH_OID);
8168758dd6SManish Pandey static auth_param_type_desc_t sp_pkg7_hash = AUTH_PARAM_TYPE_DESC(
8268758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG7_HASH_OID);
8368758dd6SManish Pandey static auth_param_type_desc_t sp_pkg8_hash = AUTH_PARAM_TYPE_DESC(
8468758dd6SManish Pandey 		AUTH_PARAM_HASH, SP_PKG8_HASH_OID);
8568758dd6SManish Pandey #endif /* SPD_spmd */
86ad43c49eSManish V Badarkhe 
87ad43c49eSManish V Badarkhe /*
88ad43c49eSManish V Badarkhe  * Trusted key certificate
89ad43c49eSManish V Badarkhe  */
90ad43c49eSManish V Badarkhe static const auth_img_desc_t trusted_key_cert = {
91ad43c49eSManish V Badarkhe 	.img_id = TRUSTED_KEY_CERT_ID,
92ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
93ad43c49eSManish V Badarkhe 	.parent = NULL,
94ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
95ad43c49eSManish V Badarkhe 		[0] = {
96ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
97ad43c49eSManish V Badarkhe 			.param.sig = {
98ad43c49eSManish V Badarkhe 				.pk = &subject_pk,
99ad43c49eSManish V Badarkhe 				.sig = &sig,
100ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
101ad43c49eSManish V Badarkhe 				.data = &raw_data
102ad43c49eSManish V Badarkhe 			}
103ad43c49eSManish V Badarkhe 		},
104ad43c49eSManish V Badarkhe 		[1] = {
105ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
106ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
107ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
108ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
109ad43c49eSManish V Badarkhe 			}
110ad43c49eSManish V Badarkhe 		}
111ad43c49eSManish V Badarkhe 	},
112ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
113ad43c49eSManish V Badarkhe 		[0] = {
114ad43c49eSManish V Badarkhe 			.type_desc = &trusted_world_pk,
115ad43c49eSManish V Badarkhe 			.data = {
116ad43c49eSManish V Badarkhe 				.ptr = (void *)trusted_world_pk_buf,
117ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
118ad43c49eSManish V Badarkhe 			}
119ad43c49eSManish V Badarkhe 		},
120ad43c49eSManish V Badarkhe 		[1] = {
121ad43c49eSManish V Badarkhe 			.type_desc = &non_trusted_world_pk,
122ad43c49eSManish V Badarkhe 			.data = {
123ad43c49eSManish V Badarkhe 				.ptr = (void *)non_trusted_world_pk_buf,
124ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
125ad43c49eSManish V Badarkhe 			}
126ad43c49eSManish V Badarkhe 		}
127ad43c49eSManish V Badarkhe 	}
128ad43c49eSManish V Badarkhe };
129ad43c49eSManish V Badarkhe /*
130ad43c49eSManish V Badarkhe  * SCP Firmware
131ad43c49eSManish V Badarkhe  */
132ad43c49eSManish V Badarkhe static const auth_img_desc_t scp_fw_key_cert = {
133ad43c49eSManish V Badarkhe 	.img_id = SCP_FW_KEY_CERT_ID,
134ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
135ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
136ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
137ad43c49eSManish V Badarkhe 		[0] = {
138ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
139ad43c49eSManish V Badarkhe 			.param.sig = {
140ad43c49eSManish V Badarkhe 				.pk = &trusted_world_pk,
141ad43c49eSManish V Badarkhe 				.sig = &sig,
142ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
143ad43c49eSManish V Badarkhe 				.data = &raw_data
144ad43c49eSManish V Badarkhe 			}
145ad43c49eSManish V Badarkhe 		},
146ad43c49eSManish V Badarkhe 		[1] = {
147ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
148ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
149ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
150ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
151ad43c49eSManish V Badarkhe 			}
152ad43c49eSManish V Badarkhe 		}
153ad43c49eSManish V Badarkhe 	},
154ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
155ad43c49eSManish V Badarkhe 		[0] = {
156ad43c49eSManish V Badarkhe 			.type_desc = &scp_fw_content_pk,
157ad43c49eSManish V Badarkhe 			.data = {
158ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
159ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
160ad43c49eSManish V Badarkhe 			}
161ad43c49eSManish V Badarkhe 		}
162ad43c49eSManish V Badarkhe 	}
163ad43c49eSManish V Badarkhe };
164ad43c49eSManish V Badarkhe static const auth_img_desc_t scp_fw_content_cert = {
165ad43c49eSManish V Badarkhe 	.img_id = SCP_FW_CONTENT_CERT_ID,
166ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
167ad43c49eSManish V Badarkhe 	.parent = &scp_fw_key_cert,
168ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
169ad43c49eSManish V Badarkhe 		[0] = {
170ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
171ad43c49eSManish V Badarkhe 			.param.sig = {
172ad43c49eSManish V Badarkhe 				.pk = &scp_fw_content_pk,
173ad43c49eSManish V Badarkhe 				.sig = &sig,
174ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
175ad43c49eSManish V Badarkhe 				.data = &raw_data
176ad43c49eSManish V Badarkhe 			}
177ad43c49eSManish V Badarkhe 		},
178ad43c49eSManish V Badarkhe 		[1] = {
179ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
180ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
181ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
182ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
183ad43c49eSManish V Badarkhe 			}
184ad43c49eSManish V Badarkhe 		}
185ad43c49eSManish V Badarkhe 	},
186ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
187ad43c49eSManish V Badarkhe 		[0] = {
188ad43c49eSManish V Badarkhe 			.type_desc = &scp_fw_hash,
189ad43c49eSManish V Badarkhe 			.data = {
190ad43c49eSManish V Badarkhe 				.ptr = (void *)scp_fw_hash_buf,
191ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
192ad43c49eSManish V Badarkhe 			}
193ad43c49eSManish V Badarkhe 		}
194ad43c49eSManish V Badarkhe 	}
195ad43c49eSManish V Badarkhe };
196ad43c49eSManish V Badarkhe static const auth_img_desc_t scp_bl2_image = {
197ad43c49eSManish V Badarkhe 	.img_id = SCP_BL2_IMAGE_ID,
198ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
199ad43c49eSManish V Badarkhe 	.parent = &scp_fw_content_cert,
200ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
201ad43c49eSManish V Badarkhe 		[0] = {
202ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
203ad43c49eSManish V Badarkhe 			.param.hash = {
204ad43c49eSManish V Badarkhe 				.data = &raw_data,
205ad43c49eSManish V Badarkhe 				.hash = &scp_fw_hash
206ad43c49eSManish V Badarkhe 			}
207ad43c49eSManish V Badarkhe 		}
208ad43c49eSManish V Badarkhe 	}
209ad43c49eSManish V Badarkhe };
210ad43c49eSManish V Badarkhe /*
211ad43c49eSManish V Badarkhe  * SoC Firmware
212ad43c49eSManish V Badarkhe  */
213ad43c49eSManish V Badarkhe static const auth_img_desc_t soc_fw_key_cert = {
214ad43c49eSManish V Badarkhe 	.img_id = SOC_FW_KEY_CERT_ID,
215ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
216ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
217ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
218ad43c49eSManish V Badarkhe 		[0] = {
219ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
220ad43c49eSManish V Badarkhe 			.param.sig = {
221ad43c49eSManish V Badarkhe 				.pk = &trusted_world_pk,
222ad43c49eSManish V Badarkhe 				.sig = &sig,
223ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
224ad43c49eSManish V Badarkhe 				.data = &raw_data
225ad43c49eSManish V Badarkhe 			}
226ad43c49eSManish V Badarkhe 		},
227ad43c49eSManish V Badarkhe 		[1] = {
228ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
229ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
230ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
231ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
232ad43c49eSManish V Badarkhe 			}
233ad43c49eSManish V Badarkhe 		}
234ad43c49eSManish V Badarkhe 	},
235ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
236ad43c49eSManish V Badarkhe 		[0] = {
237ad43c49eSManish V Badarkhe 			.type_desc = &soc_fw_content_pk,
238ad43c49eSManish V Badarkhe 			.data = {
239ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
240ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
241ad43c49eSManish V Badarkhe 			}
242ad43c49eSManish V Badarkhe 		}
243ad43c49eSManish V Badarkhe 	}
244ad43c49eSManish V Badarkhe };
245ad43c49eSManish V Badarkhe static const auth_img_desc_t soc_fw_content_cert = {
246ad43c49eSManish V Badarkhe 	.img_id = SOC_FW_CONTENT_CERT_ID,
247ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
248ad43c49eSManish V Badarkhe 	.parent = &soc_fw_key_cert,
249ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
250ad43c49eSManish V Badarkhe 		[0] = {
251ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
252ad43c49eSManish V Badarkhe 			.param.sig = {
253ad43c49eSManish V Badarkhe 				.pk = &soc_fw_content_pk,
254ad43c49eSManish V Badarkhe 				.sig = &sig,
255ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
256ad43c49eSManish V Badarkhe 				.data = &raw_data
257ad43c49eSManish V Badarkhe 			}
258ad43c49eSManish V Badarkhe 		},
259ad43c49eSManish V Badarkhe 		[1] = {
260ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
261ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
262ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
263ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
264ad43c49eSManish V Badarkhe 			}
265ad43c49eSManish V Badarkhe 		}
266ad43c49eSManish V Badarkhe 	},
267ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
268ad43c49eSManish V Badarkhe 		[0] = {
269ad43c49eSManish V Badarkhe 			.type_desc = &soc_fw_hash,
270ad43c49eSManish V Badarkhe 			.data = {
271ad43c49eSManish V Badarkhe 				.ptr = (void *)soc_fw_hash_buf,
272ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
273ad43c49eSManish V Badarkhe 			}
274ad43c49eSManish V Badarkhe 		},
275ad43c49eSManish V Badarkhe 		[1] = {
276ad43c49eSManish V Badarkhe 			.type_desc = &soc_fw_config_hash,
277ad43c49eSManish V Badarkhe 			.data = {
278ad43c49eSManish V Badarkhe 				.ptr = (void *)soc_fw_config_hash_buf,
279ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
280ad43c49eSManish V Badarkhe 			}
281ad43c49eSManish V Badarkhe 		}
282ad43c49eSManish V Badarkhe 	}
283ad43c49eSManish V Badarkhe };
284ad43c49eSManish V Badarkhe static const auth_img_desc_t bl31_image = {
285ad43c49eSManish V Badarkhe 	.img_id = BL31_IMAGE_ID,
286ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
287ad43c49eSManish V Badarkhe 	.parent = &soc_fw_content_cert,
288ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
289ad43c49eSManish V Badarkhe 		[0] = {
290ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
291ad43c49eSManish V Badarkhe 			.param.hash = {
292ad43c49eSManish V Badarkhe 				.data = &raw_data,
293ad43c49eSManish V Badarkhe 				.hash = &soc_fw_hash
294ad43c49eSManish V Badarkhe 			}
295ad43c49eSManish V Badarkhe 		}
296ad43c49eSManish V Badarkhe 	}
297ad43c49eSManish V Badarkhe };
298ad43c49eSManish V Badarkhe /* SOC FW Config */
299ad43c49eSManish V Badarkhe static const auth_img_desc_t soc_fw_config = {
300ad43c49eSManish V Badarkhe 	.img_id = SOC_FW_CONFIG_ID,
301ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
302ad43c49eSManish V Badarkhe 	.parent = &soc_fw_content_cert,
303ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
304ad43c49eSManish V Badarkhe 		[0] = {
305ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
306ad43c49eSManish V Badarkhe 			.param.hash = {
307ad43c49eSManish V Badarkhe 				.data = &raw_data,
308ad43c49eSManish V Badarkhe 				.hash = &soc_fw_config_hash
309ad43c49eSManish V Badarkhe 			}
310ad43c49eSManish V Badarkhe 		}
311ad43c49eSManish V Badarkhe 	}
312ad43c49eSManish V Badarkhe };
313ad43c49eSManish V Badarkhe /*
314ad43c49eSManish V Badarkhe  * Trusted OS Firmware
315ad43c49eSManish V Badarkhe  */
316ad43c49eSManish V Badarkhe static const auth_img_desc_t trusted_os_fw_key_cert = {
317ad43c49eSManish V Badarkhe 	.img_id = TRUSTED_OS_FW_KEY_CERT_ID,
318ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
319ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
320ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
321ad43c49eSManish V Badarkhe 		[0] = {
322ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
323ad43c49eSManish V Badarkhe 			.param.sig = {
324ad43c49eSManish V Badarkhe 				.pk = &trusted_world_pk,
325ad43c49eSManish V Badarkhe 				.sig = &sig,
326ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
327ad43c49eSManish V Badarkhe 				.data = &raw_data
328ad43c49eSManish V Badarkhe 			}
329ad43c49eSManish V Badarkhe 		},
330ad43c49eSManish V Badarkhe 		[1] = {
331ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
332ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
333ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
334ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
335ad43c49eSManish V Badarkhe 			}
336ad43c49eSManish V Badarkhe 		}
337ad43c49eSManish V Badarkhe 	},
338ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
339ad43c49eSManish V Badarkhe 		[0] = {
340ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_content_pk,
341ad43c49eSManish V Badarkhe 			.data = {
342ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
343ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
344ad43c49eSManish V Badarkhe 			}
345ad43c49eSManish V Badarkhe 		}
346ad43c49eSManish V Badarkhe 	}
347ad43c49eSManish V Badarkhe };
348ad43c49eSManish V Badarkhe static const auth_img_desc_t trusted_os_fw_content_cert = {
349ad43c49eSManish V Badarkhe 	.img_id = TRUSTED_OS_FW_CONTENT_CERT_ID,
350ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
351ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_key_cert,
352ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
353ad43c49eSManish V Badarkhe 		[0] = {
354ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
355ad43c49eSManish V Badarkhe 			.param.sig = {
356ad43c49eSManish V Badarkhe 				.pk = &tos_fw_content_pk,
357ad43c49eSManish V Badarkhe 				.sig = &sig,
358ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
359ad43c49eSManish V Badarkhe 				.data = &raw_data
360ad43c49eSManish V Badarkhe 			}
361ad43c49eSManish V Badarkhe 		},
362ad43c49eSManish V Badarkhe 		[1] = {
363ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
364ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
365ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
366ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
367ad43c49eSManish V Badarkhe 			}
368ad43c49eSManish V Badarkhe 		}
369ad43c49eSManish V Badarkhe 	},
370ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
371ad43c49eSManish V Badarkhe 		[0] = {
372ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_hash,
373ad43c49eSManish V Badarkhe 			.data = {
374ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_hash_buf,
375ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
376ad43c49eSManish V Badarkhe 			}
377ad43c49eSManish V Badarkhe 		},
378ad43c49eSManish V Badarkhe 		[1] = {
379ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_extra1_hash,
380ad43c49eSManish V Badarkhe 			.data = {
381ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_extra1_hash_buf,
382ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
383ad43c49eSManish V Badarkhe 			}
384ad43c49eSManish V Badarkhe 		},
385ad43c49eSManish V Badarkhe 		[2] = {
386ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_extra2_hash,
387ad43c49eSManish V Badarkhe 			.data = {
388ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_extra2_hash_buf,
389ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
390ad43c49eSManish V Badarkhe 			}
391ad43c49eSManish V Badarkhe 		},
392ad43c49eSManish V Badarkhe 		[3] = {
393ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_config_hash,
394ad43c49eSManish V Badarkhe 			.data = {
395ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_config_hash_buf,
396ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
397ad43c49eSManish V Badarkhe 			}
398ad43c49eSManish V Badarkhe 		}
399ad43c49eSManish V Badarkhe 	}
400ad43c49eSManish V Badarkhe };
401ad43c49eSManish V Badarkhe static const auth_img_desc_t bl32_image = {
402ad43c49eSManish V Badarkhe 	.img_id = BL32_IMAGE_ID,
403ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
404ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
405ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
406ad43c49eSManish V Badarkhe 		[0] = {
407ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
408ad43c49eSManish V Badarkhe 			.param.hash = {
409ad43c49eSManish V Badarkhe 				.data = &raw_data,
410ad43c49eSManish V Badarkhe 				.hash = &tos_fw_hash
411ad43c49eSManish V Badarkhe 			}
412ad43c49eSManish V Badarkhe 		}
413ad43c49eSManish V Badarkhe 	}
414ad43c49eSManish V Badarkhe };
415ad43c49eSManish V Badarkhe static const auth_img_desc_t bl32_extra1_image = {
416ad43c49eSManish V Badarkhe 	.img_id = BL32_EXTRA1_IMAGE_ID,
417ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
418ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
419ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
420ad43c49eSManish V Badarkhe 		[0] = {
421ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
422ad43c49eSManish V Badarkhe 			.param.hash = {
423ad43c49eSManish V Badarkhe 				.data = &raw_data,
424ad43c49eSManish V Badarkhe 				.hash = &tos_fw_extra1_hash
425ad43c49eSManish V Badarkhe 			}
426ad43c49eSManish V Badarkhe 		}
427ad43c49eSManish V Badarkhe 	}
428ad43c49eSManish V Badarkhe };
429ad43c49eSManish V Badarkhe static const auth_img_desc_t bl32_extra2_image = {
430ad43c49eSManish V Badarkhe 	.img_id = BL32_EXTRA2_IMAGE_ID,
431ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
432ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
433ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
434ad43c49eSManish V Badarkhe 		[0] = {
435ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
436ad43c49eSManish V Badarkhe 			.param.hash = {
437ad43c49eSManish V Badarkhe 				.data = &raw_data,
438ad43c49eSManish V Badarkhe 				.hash = &tos_fw_extra2_hash
439ad43c49eSManish V Badarkhe 			}
440ad43c49eSManish V Badarkhe 		}
441ad43c49eSManish V Badarkhe 	}
442ad43c49eSManish V Badarkhe };
443ad43c49eSManish V Badarkhe /* TOS FW Config */
444ad43c49eSManish V Badarkhe static const auth_img_desc_t tos_fw_config = {
445ad43c49eSManish V Badarkhe 	.img_id = TOS_FW_CONFIG_ID,
446ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
447ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
448ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
449ad43c49eSManish V Badarkhe 		[0] = {
450ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
451ad43c49eSManish V Badarkhe 			.param.hash = {
452ad43c49eSManish V Badarkhe 				.data = &raw_data,
453ad43c49eSManish V Badarkhe 				.hash = &tos_fw_config_hash
454ad43c49eSManish V Badarkhe 			}
455ad43c49eSManish V Badarkhe 		}
456ad43c49eSManish V Badarkhe 	}
457ad43c49eSManish V Badarkhe };
458ad43c49eSManish V Badarkhe /*
459ad43c49eSManish V Badarkhe  * Non-Trusted Firmware
460ad43c49eSManish V Badarkhe  */
461ad43c49eSManish V Badarkhe static const auth_img_desc_t non_trusted_fw_key_cert = {
462ad43c49eSManish V Badarkhe 	.img_id = NON_TRUSTED_FW_KEY_CERT_ID,
463ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
464ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
465ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
466ad43c49eSManish V Badarkhe 		[0] = {
467ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
468ad43c49eSManish V Badarkhe 			.param.sig = {
469ad43c49eSManish V Badarkhe 				.pk = &non_trusted_world_pk,
470ad43c49eSManish V Badarkhe 				.sig = &sig,
471ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
472ad43c49eSManish V Badarkhe 				.data = &raw_data
473ad43c49eSManish V Badarkhe 			}
474ad43c49eSManish V Badarkhe 		},
475ad43c49eSManish V Badarkhe 		[1] = {
476ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
477ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
478ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &non_trusted_nv_ctr,
479ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &non_trusted_nv_ctr
480ad43c49eSManish V Badarkhe 			}
481ad43c49eSManish V Badarkhe 		}
482ad43c49eSManish V Badarkhe 	},
483ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
484ad43c49eSManish V Badarkhe 		[0] = {
485ad43c49eSManish V Badarkhe 			.type_desc = &nt_fw_content_pk,
486ad43c49eSManish V Badarkhe 			.data = {
487ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
488ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
489ad43c49eSManish V Badarkhe 			}
490ad43c49eSManish V Badarkhe 		}
491ad43c49eSManish V Badarkhe 	}
492ad43c49eSManish V Badarkhe };
493ad43c49eSManish V Badarkhe static const auth_img_desc_t non_trusted_fw_content_cert = {
494ad43c49eSManish V Badarkhe 	.img_id = NON_TRUSTED_FW_CONTENT_CERT_ID,
495ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
496ad43c49eSManish V Badarkhe 	.parent = &non_trusted_fw_key_cert,
497ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
498ad43c49eSManish V Badarkhe 		[0] = {
499ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
500ad43c49eSManish V Badarkhe 			.param.sig = {
501ad43c49eSManish V Badarkhe 				.pk = &nt_fw_content_pk,
502ad43c49eSManish V Badarkhe 				.sig = &sig,
503ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
504ad43c49eSManish V Badarkhe 				.data = &raw_data
505ad43c49eSManish V Badarkhe 			}
506ad43c49eSManish V Badarkhe 		},
507ad43c49eSManish V Badarkhe 		[1] = {
508ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
509ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
510ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &non_trusted_nv_ctr,
511ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &non_trusted_nv_ctr
512ad43c49eSManish V Badarkhe 			}
513ad43c49eSManish V Badarkhe 		}
514ad43c49eSManish V Badarkhe 	},
515ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
516ad43c49eSManish V Badarkhe 		[0] = {
517ad43c49eSManish V Badarkhe 			.type_desc = &nt_world_bl_hash,
518ad43c49eSManish V Badarkhe 			.data = {
519ad43c49eSManish V Badarkhe 				.ptr = (void *)nt_world_bl_hash_buf,
520ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
521ad43c49eSManish V Badarkhe 			}
522ad43c49eSManish V Badarkhe 		},
523ad43c49eSManish V Badarkhe 		[1] = {
524ad43c49eSManish V Badarkhe 			.type_desc = &nt_fw_config_hash,
525ad43c49eSManish V Badarkhe 			.data = {
526ad43c49eSManish V Badarkhe 				.ptr = (void *)nt_fw_config_hash_buf,
527ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
528ad43c49eSManish V Badarkhe 			}
529ad43c49eSManish V Badarkhe 		}
530ad43c49eSManish V Badarkhe 	}
531ad43c49eSManish V Badarkhe };
532ad43c49eSManish V Badarkhe static const auth_img_desc_t bl33_image = {
533ad43c49eSManish V Badarkhe 	.img_id = BL33_IMAGE_ID,
534ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
535ad43c49eSManish V Badarkhe 	.parent = &non_trusted_fw_content_cert,
536ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
537ad43c49eSManish V Badarkhe 		[0] = {
538ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
539ad43c49eSManish V Badarkhe 			.param.hash = {
540ad43c49eSManish V Badarkhe 				.data = &raw_data,
541ad43c49eSManish V Badarkhe 				.hash = &nt_world_bl_hash
542ad43c49eSManish V Badarkhe 			}
543ad43c49eSManish V Badarkhe 		}
544ad43c49eSManish V Badarkhe 	}
545ad43c49eSManish V Badarkhe };
546ad43c49eSManish V Badarkhe /* NT FW Config */
547ad43c49eSManish V Badarkhe static const auth_img_desc_t nt_fw_config = {
548ad43c49eSManish V Badarkhe 	.img_id = NT_FW_CONFIG_ID,
549ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
550ad43c49eSManish V Badarkhe 	.parent = &non_trusted_fw_content_cert,
551ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
552ad43c49eSManish V Badarkhe 		[0] = {
553ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
554ad43c49eSManish V Badarkhe 			.param.hash = {
555ad43c49eSManish V Badarkhe 				.data = &raw_data,
556ad43c49eSManish V Badarkhe 				.hash = &nt_fw_config_hash
557ad43c49eSManish V Badarkhe 			}
558ad43c49eSManish V Badarkhe 		}
559ad43c49eSManish V Badarkhe 	}
560ad43c49eSManish V Badarkhe };
56168758dd6SManish Pandey /* Secure Partitions */
56268758dd6SManish Pandey #if defined(SPD_spmd)
56303a5225cSManish Pandey static const auth_img_desc_t sip_sp_content_cert = {
56403a5225cSManish Pandey 	.img_id = SIP_SP_CONTENT_CERT_ID,
56568758dd6SManish Pandey 	.img_type = IMG_CERT,
56668758dd6SManish Pandey 	.parent = &trusted_key_cert,
56768758dd6SManish Pandey 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
56868758dd6SManish Pandey 		[0] = {
56968758dd6SManish Pandey 			.type = AUTH_METHOD_SIG,
57068758dd6SManish Pandey 			.param.sig = {
57168758dd6SManish Pandey 				.pk = &trusted_world_pk,
57268758dd6SManish Pandey 				.sig = &sig,
57368758dd6SManish Pandey 				.alg = &sig_alg,
57468758dd6SManish Pandey 				.data = &raw_data
57568758dd6SManish Pandey 			}
57668758dd6SManish Pandey 		},
57768758dd6SManish Pandey 		[1] = {
57868758dd6SManish Pandey 			.type = AUTH_METHOD_NV_CTR,
57968758dd6SManish Pandey 			.param.nv_ctr = {
58068758dd6SManish Pandey 				.cert_nv_ctr = &trusted_nv_ctr,
58168758dd6SManish Pandey 				.plat_nv_ctr = &trusted_nv_ctr
58268758dd6SManish Pandey 			}
58368758dd6SManish Pandey 		}
58468758dd6SManish Pandey 	},
58568758dd6SManish Pandey 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
58668758dd6SManish Pandey 		[0] = {
58768758dd6SManish Pandey 			.type_desc = &sp_pkg1_hash,
58868758dd6SManish Pandey 			.data = {
58968758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[0],
59068758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
59168758dd6SManish Pandey 			}
59268758dd6SManish Pandey 		},
59368758dd6SManish Pandey 		[1] = {
59468758dd6SManish Pandey 			.type_desc = &sp_pkg2_hash,
59568758dd6SManish Pandey 			.data = {
59668758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[1],
59768758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
59868758dd6SManish Pandey 			}
59968758dd6SManish Pandey 		},
60068758dd6SManish Pandey 		[2] = {
60168758dd6SManish Pandey 			.type_desc = &sp_pkg3_hash,
60268758dd6SManish Pandey 			.data = {
60368758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[2],
60468758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
60568758dd6SManish Pandey 			}
60668758dd6SManish Pandey 		},
60768758dd6SManish Pandey 		[3] = {
60868758dd6SManish Pandey 			.type_desc = &sp_pkg4_hash,
60968758dd6SManish Pandey 			.data = {
61068758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[3],
61168758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
61268758dd6SManish Pandey 			}
61368758dd6SManish Pandey 		},
61468758dd6SManish Pandey 		[4] = {
61568758dd6SManish Pandey 			.type_desc = &sp_pkg5_hash,
61668758dd6SManish Pandey 			.data = {
61768758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[4],
61868758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
61968758dd6SManish Pandey 			}
62068758dd6SManish Pandey 		},
62168758dd6SManish Pandey 		[5] = {
62268758dd6SManish Pandey 			.type_desc = &sp_pkg6_hash,
62368758dd6SManish Pandey 			.data = {
62468758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[5],
62568758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
62668758dd6SManish Pandey 			}
62768758dd6SManish Pandey 		},
62868758dd6SManish Pandey 		[6] = {
62968758dd6SManish Pandey 			.type_desc = &sp_pkg7_hash,
63068758dd6SManish Pandey 			.data = {
63168758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[6],
63268758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
63368758dd6SManish Pandey 			}
63468758dd6SManish Pandey 		},
63568758dd6SManish Pandey 		[7] = {
63668758dd6SManish Pandey 			.type_desc = &sp_pkg8_hash,
63768758dd6SManish Pandey 			.data = {
63868758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[7],
63968758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
64068758dd6SManish Pandey 			}
64168758dd6SManish Pandey 		}
64268758dd6SManish Pandey 	}
64368758dd6SManish Pandey };
64468758dd6SManish Pandey 
64503a5225cSManish Pandey DEFINE_SIP_SP_PKG(1);
64603a5225cSManish Pandey DEFINE_SIP_SP_PKG(2);
64703a5225cSManish Pandey DEFINE_SIP_SP_PKG(3);
64803a5225cSManish Pandey DEFINE_SIP_SP_PKG(4);
64903a5225cSManish Pandey DEFINE_SIP_SP_PKG(5);
65003a5225cSManish Pandey DEFINE_SIP_SP_PKG(6);
65103a5225cSManish Pandey DEFINE_SIP_SP_PKG(7);
65203a5225cSManish Pandey DEFINE_SIP_SP_PKG(8);
65368758dd6SManish Pandey #endif /* SPD_spmd */
654ad43c49eSManish V Badarkhe 
655ad43c49eSManish V Badarkhe static const auth_img_desc_t * const cot_desc[] = {
656ad43c49eSManish V Badarkhe 	[TRUSTED_BOOT_FW_CERT_ID]		=	&trusted_boot_fw_cert,
657ad43c49eSManish V Badarkhe 	[HW_CONFIG_ID]				=	&hw_config,
658ad43c49eSManish V Badarkhe 	[TRUSTED_KEY_CERT_ID]			=	&trusted_key_cert,
659ad43c49eSManish V Badarkhe 	[SCP_FW_KEY_CERT_ID]			=	&scp_fw_key_cert,
660ad43c49eSManish V Badarkhe 	[SCP_FW_CONTENT_CERT_ID]		=	&scp_fw_content_cert,
661ad43c49eSManish V Badarkhe 	[SCP_BL2_IMAGE_ID]			=	&scp_bl2_image,
662ad43c49eSManish V Badarkhe 	[SOC_FW_KEY_CERT_ID]			=	&soc_fw_key_cert,
663ad43c49eSManish V Badarkhe 	[SOC_FW_CONTENT_CERT_ID]		=	&soc_fw_content_cert,
664ad43c49eSManish V Badarkhe 	[BL31_IMAGE_ID]				=	&bl31_image,
665ad43c49eSManish V Badarkhe 	[SOC_FW_CONFIG_ID]			=	&soc_fw_config,
666ad43c49eSManish V Badarkhe 	[TRUSTED_OS_FW_KEY_CERT_ID]		=	&trusted_os_fw_key_cert,
667ad43c49eSManish V Badarkhe 	[TRUSTED_OS_FW_CONTENT_CERT_ID]		=	&trusted_os_fw_content_cert,
668ad43c49eSManish V Badarkhe 	[BL32_IMAGE_ID]				=	&bl32_image,
669ad43c49eSManish V Badarkhe 	[BL32_EXTRA1_IMAGE_ID]			=	&bl32_extra1_image,
670ad43c49eSManish V Badarkhe 	[BL32_EXTRA2_IMAGE_ID]			=	&bl32_extra2_image,
671ad43c49eSManish V Badarkhe 	[TOS_FW_CONFIG_ID]			=	&tos_fw_config,
672ad43c49eSManish V Badarkhe 	[NON_TRUSTED_FW_KEY_CERT_ID]		=	&non_trusted_fw_key_cert,
673ad43c49eSManish V Badarkhe 	[NON_TRUSTED_FW_CONTENT_CERT_ID]	=	&non_trusted_fw_content_cert,
674ad43c49eSManish V Badarkhe 	[BL33_IMAGE_ID]				=	&bl33_image,
675ad43c49eSManish V Badarkhe 	[NT_FW_CONFIG_ID]			=	&nt_fw_config,
67668758dd6SManish Pandey #if defined(SPD_spmd)
67703a5225cSManish Pandey 	[SIP_SP_CONTENT_CERT_ID]		=	&sip_sp_content_cert,
67803a5225cSManish Pandey 	[SP_PKG1_ID]				=	&sp_pkg1,
67903a5225cSManish Pandey 	[SP_PKG2_ID]				=	&sp_pkg2,
68003a5225cSManish Pandey 	[SP_PKG3_ID]				=	&sp_pkg3,
68103a5225cSManish Pandey 	[SP_PKG4_ID]				=	&sp_pkg4,
68203a5225cSManish Pandey 	[SP_PKG5_ID]				=	&sp_pkg5,
68303a5225cSManish Pandey 	[SP_PKG6_ID]				=	&sp_pkg6,
68403a5225cSManish Pandey 	[SP_PKG7_ID]				=	&sp_pkg7,
68503a5225cSManish Pandey 	[SP_PKG8_ID]				=       &sp_pkg8,
68668758dd6SManish Pandey #endif
687ad43c49eSManish V Badarkhe };
688ad43c49eSManish V Badarkhe 
689ad43c49eSManish V Badarkhe /* Register the CoT in the authentication module */
690ad43c49eSManish V Badarkhe REGISTER_COT(cot_desc);
691