xref: /rk3399_ARM-atf/drivers/auth/tbbr/tbbr_cot_bl2.c (revision 2941e5b1466070f804b01201ebdfd1b143a50807)
1ad43c49eSManish V Badarkhe /*
2*7962c1c2SManish V Badarkhe  * Copyright (c) 2015-2024, 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 
9a8eadc51SGovindraj 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>
13a8eadc51SGovindraj 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 
20a8eadc51SGovindraj Raja #include <platform_def.h>
21a8eadc51SGovindraj 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 
87*7962c1c2SManish V Badarkhe /* HW Config */
88*7962c1c2SManish V Badarkhe static const auth_img_desc_t hw_config = {
89*7962c1c2SManish V Badarkhe 	.img_id = HW_CONFIG_ID,
90*7962c1c2SManish V Badarkhe 	.img_type = IMG_RAW,
91*7962c1c2SManish V Badarkhe 	.parent = &trusted_boot_fw_cert,
92*7962c1c2SManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
93*7962c1c2SManish V Badarkhe 		[0] = {
94*7962c1c2SManish V Badarkhe 			.type = AUTH_METHOD_HASH,
95*7962c1c2SManish V Badarkhe 			.param.hash = {
96*7962c1c2SManish V Badarkhe 				.data = &raw_data,
97*7962c1c2SManish V Badarkhe 				.hash = &hw_config_hash
98*7962c1c2SManish V Badarkhe 			}
99*7962c1c2SManish V Badarkhe 		}
100*7962c1c2SManish V Badarkhe 	}
101*7962c1c2SManish V Badarkhe };
102*7962c1c2SManish V Badarkhe 
103ad43c49eSManish V Badarkhe /*
104ad43c49eSManish V Badarkhe  * Trusted key certificate
105ad43c49eSManish V Badarkhe  */
106ad43c49eSManish V Badarkhe static const auth_img_desc_t trusted_key_cert = {
107ad43c49eSManish V Badarkhe 	.img_id = TRUSTED_KEY_CERT_ID,
108ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
109ad43c49eSManish V Badarkhe 	.parent = NULL,
110ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
111ad43c49eSManish V Badarkhe 		[0] = {
112ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
113ad43c49eSManish V Badarkhe 			.param.sig = {
114ad43c49eSManish V Badarkhe 				.pk = &subject_pk,
115ad43c49eSManish V Badarkhe 				.sig = &sig,
116ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
117ad43c49eSManish V Badarkhe 				.data = &raw_data
118ad43c49eSManish V Badarkhe 			}
119ad43c49eSManish V Badarkhe 		},
120ad43c49eSManish V Badarkhe 		[1] = {
121ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
122ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
123ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
124ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
125ad43c49eSManish V Badarkhe 			}
126ad43c49eSManish V Badarkhe 		}
127ad43c49eSManish V Badarkhe 	},
128ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
129ad43c49eSManish V Badarkhe 		[0] = {
130ad43c49eSManish V Badarkhe 			.type_desc = &trusted_world_pk,
131ad43c49eSManish V Badarkhe 			.data = {
132ad43c49eSManish V Badarkhe 				.ptr = (void *)trusted_world_pk_buf,
133ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
134ad43c49eSManish V Badarkhe 			}
135ad43c49eSManish V Badarkhe 		},
136ad43c49eSManish V Badarkhe 		[1] = {
137ad43c49eSManish V Badarkhe 			.type_desc = &non_trusted_world_pk,
138ad43c49eSManish V Badarkhe 			.data = {
139ad43c49eSManish V Badarkhe 				.ptr = (void *)non_trusted_world_pk_buf,
140ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
141ad43c49eSManish V Badarkhe 			}
142ad43c49eSManish V Badarkhe 		}
143ad43c49eSManish V Badarkhe 	}
144ad43c49eSManish V Badarkhe };
145ad43c49eSManish V Badarkhe /*
146ad43c49eSManish V Badarkhe  * SCP Firmware
147ad43c49eSManish V Badarkhe  */
148ad43c49eSManish V Badarkhe static const auth_img_desc_t scp_fw_key_cert = {
149ad43c49eSManish V Badarkhe 	.img_id = SCP_FW_KEY_CERT_ID,
150ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
151ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
152ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
153ad43c49eSManish V Badarkhe 		[0] = {
154ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
155ad43c49eSManish V Badarkhe 			.param.sig = {
156ad43c49eSManish V Badarkhe 				.pk = &trusted_world_pk,
157ad43c49eSManish V Badarkhe 				.sig = &sig,
158ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
159ad43c49eSManish V Badarkhe 				.data = &raw_data
160ad43c49eSManish V Badarkhe 			}
161ad43c49eSManish V Badarkhe 		},
162ad43c49eSManish V Badarkhe 		[1] = {
163ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
164ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
165ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
166ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
167ad43c49eSManish V Badarkhe 			}
168ad43c49eSManish V Badarkhe 		}
169ad43c49eSManish V Badarkhe 	},
170ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
171ad43c49eSManish V Badarkhe 		[0] = {
172ad43c49eSManish V Badarkhe 			.type_desc = &scp_fw_content_pk,
173ad43c49eSManish V Badarkhe 			.data = {
174ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
175ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
176ad43c49eSManish V Badarkhe 			}
177ad43c49eSManish V Badarkhe 		}
178ad43c49eSManish V Badarkhe 	}
179ad43c49eSManish V Badarkhe };
180ad43c49eSManish V Badarkhe static const auth_img_desc_t scp_fw_content_cert = {
181ad43c49eSManish V Badarkhe 	.img_id = SCP_FW_CONTENT_CERT_ID,
182ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
183ad43c49eSManish V Badarkhe 	.parent = &scp_fw_key_cert,
184ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
185ad43c49eSManish V Badarkhe 		[0] = {
186ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
187ad43c49eSManish V Badarkhe 			.param.sig = {
188ad43c49eSManish V Badarkhe 				.pk = &scp_fw_content_pk,
189ad43c49eSManish V Badarkhe 				.sig = &sig,
190ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
191ad43c49eSManish V Badarkhe 				.data = &raw_data
192ad43c49eSManish V Badarkhe 			}
193ad43c49eSManish V Badarkhe 		},
194ad43c49eSManish V Badarkhe 		[1] = {
195ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
196ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
197ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
198ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
199ad43c49eSManish V Badarkhe 			}
200ad43c49eSManish V Badarkhe 		}
201ad43c49eSManish V Badarkhe 	},
202ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
203ad43c49eSManish V Badarkhe 		[0] = {
204ad43c49eSManish V Badarkhe 			.type_desc = &scp_fw_hash,
205ad43c49eSManish V Badarkhe 			.data = {
206ad43c49eSManish V Badarkhe 				.ptr = (void *)scp_fw_hash_buf,
207ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
208ad43c49eSManish V Badarkhe 			}
209ad43c49eSManish V Badarkhe 		}
210ad43c49eSManish V Badarkhe 	}
211ad43c49eSManish V Badarkhe };
212ad43c49eSManish V Badarkhe static const auth_img_desc_t scp_bl2_image = {
213ad43c49eSManish V Badarkhe 	.img_id = SCP_BL2_IMAGE_ID,
214ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
215ad43c49eSManish V Badarkhe 	.parent = &scp_fw_content_cert,
216ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
217ad43c49eSManish V Badarkhe 		[0] = {
218ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
219ad43c49eSManish V Badarkhe 			.param.hash = {
220ad43c49eSManish V Badarkhe 				.data = &raw_data,
221ad43c49eSManish V Badarkhe 				.hash = &scp_fw_hash
222ad43c49eSManish V Badarkhe 			}
223ad43c49eSManish V Badarkhe 		}
224ad43c49eSManish V Badarkhe 	}
225ad43c49eSManish V Badarkhe };
226ad43c49eSManish V Badarkhe /*
227ad43c49eSManish V Badarkhe  * SoC Firmware
228ad43c49eSManish V Badarkhe  */
229ad43c49eSManish V Badarkhe static const auth_img_desc_t soc_fw_key_cert = {
230ad43c49eSManish V Badarkhe 	.img_id = SOC_FW_KEY_CERT_ID,
231ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
232ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
233ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
234ad43c49eSManish V Badarkhe 		[0] = {
235ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
236ad43c49eSManish V Badarkhe 			.param.sig = {
237ad43c49eSManish V Badarkhe 				.pk = &trusted_world_pk,
238ad43c49eSManish V Badarkhe 				.sig = &sig,
239ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
240ad43c49eSManish V Badarkhe 				.data = &raw_data
241ad43c49eSManish V Badarkhe 			}
242ad43c49eSManish V Badarkhe 		},
243ad43c49eSManish V Badarkhe 		[1] = {
244ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
245ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
246ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
247ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
248ad43c49eSManish V Badarkhe 			}
249ad43c49eSManish V Badarkhe 		}
250ad43c49eSManish V Badarkhe 	},
251ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
252ad43c49eSManish V Badarkhe 		[0] = {
253ad43c49eSManish V Badarkhe 			.type_desc = &soc_fw_content_pk,
254ad43c49eSManish V Badarkhe 			.data = {
255ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
256ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
257ad43c49eSManish V Badarkhe 			}
258ad43c49eSManish V Badarkhe 		}
259ad43c49eSManish V Badarkhe 	}
260ad43c49eSManish V Badarkhe };
261ad43c49eSManish V Badarkhe static const auth_img_desc_t soc_fw_content_cert = {
262ad43c49eSManish V Badarkhe 	.img_id = SOC_FW_CONTENT_CERT_ID,
263ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
264ad43c49eSManish V Badarkhe 	.parent = &soc_fw_key_cert,
265ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
266ad43c49eSManish V Badarkhe 		[0] = {
267ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
268ad43c49eSManish V Badarkhe 			.param.sig = {
269ad43c49eSManish V Badarkhe 				.pk = &soc_fw_content_pk,
270ad43c49eSManish V Badarkhe 				.sig = &sig,
271ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
272ad43c49eSManish V Badarkhe 				.data = &raw_data
273ad43c49eSManish V Badarkhe 			}
274ad43c49eSManish V Badarkhe 		},
275ad43c49eSManish V Badarkhe 		[1] = {
276ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
277ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
278ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
279ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
280ad43c49eSManish V Badarkhe 			}
281ad43c49eSManish V Badarkhe 		}
282ad43c49eSManish V Badarkhe 	},
283ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
284ad43c49eSManish V Badarkhe 		[0] = {
285ad43c49eSManish V Badarkhe 			.type_desc = &soc_fw_hash,
286ad43c49eSManish V Badarkhe 			.data = {
287ad43c49eSManish V Badarkhe 				.ptr = (void *)soc_fw_hash_buf,
288ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
289ad43c49eSManish V Badarkhe 			}
290ad43c49eSManish V Badarkhe 		},
291ad43c49eSManish V Badarkhe 		[1] = {
292ad43c49eSManish V Badarkhe 			.type_desc = &soc_fw_config_hash,
293ad43c49eSManish V Badarkhe 			.data = {
294ad43c49eSManish V Badarkhe 				.ptr = (void *)soc_fw_config_hash_buf,
295ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
296ad43c49eSManish V Badarkhe 			}
297ad43c49eSManish V Badarkhe 		}
298ad43c49eSManish V Badarkhe 	}
299ad43c49eSManish V Badarkhe };
300ad43c49eSManish V Badarkhe static const auth_img_desc_t bl31_image = {
301ad43c49eSManish V Badarkhe 	.img_id = BL31_IMAGE_ID,
302ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
303ad43c49eSManish V Badarkhe 	.parent = &soc_fw_content_cert,
304ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
305ad43c49eSManish V Badarkhe 		[0] = {
306ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
307ad43c49eSManish V Badarkhe 			.param.hash = {
308ad43c49eSManish V Badarkhe 				.data = &raw_data,
309ad43c49eSManish V Badarkhe 				.hash = &soc_fw_hash
310ad43c49eSManish V Badarkhe 			}
311ad43c49eSManish V Badarkhe 		}
312ad43c49eSManish V Badarkhe 	}
313ad43c49eSManish V Badarkhe };
314ad43c49eSManish V Badarkhe /* SOC FW Config */
315ad43c49eSManish V Badarkhe static const auth_img_desc_t soc_fw_config = {
316ad43c49eSManish V Badarkhe 	.img_id = SOC_FW_CONFIG_ID,
317ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
318ad43c49eSManish V Badarkhe 	.parent = &soc_fw_content_cert,
319ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
320ad43c49eSManish V Badarkhe 		[0] = {
321ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
322ad43c49eSManish V Badarkhe 			.param.hash = {
323ad43c49eSManish V Badarkhe 				.data = &raw_data,
324ad43c49eSManish V Badarkhe 				.hash = &soc_fw_config_hash
325ad43c49eSManish V Badarkhe 			}
326ad43c49eSManish V Badarkhe 		}
327ad43c49eSManish V Badarkhe 	}
328ad43c49eSManish V Badarkhe };
329ad43c49eSManish V Badarkhe /*
330ad43c49eSManish V Badarkhe  * Trusted OS Firmware
331ad43c49eSManish V Badarkhe  */
332ad43c49eSManish V Badarkhe static const auth_img_desc_t trusted_os_fw_key_cert = {
333ad43c49eSManish V Badarkhe 	.img_id = TRUSTED_OS_FW_KEY_CERT_ID,
334ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
335ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
336ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
337ad43c49eSManish V Badarkhe 		[0] = {
338ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
339ad43c49eSManish V Badarkhe 			.param.sig = {
340ad43c49eSManish V Badarkhe 				.pk = &trusted_world_pk,
341ad43c49eSManish V Badarkhe 				.sig = &sig,
342ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
343ad43c49eSManish V Badarkhe 				.data = &raw_data
344ad43c49eSManish V Badarkhe 			}
345ad43c49eSManish V Badarkhe 		},
346ad43c49eSManish V Badarkhe 		[1] = {
347ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
348ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
349ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
350ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
351ad43c49eSManish V Badarkhe 			}
352ad43c49eSManish V Badarkhe 		}
353ad43c49eSManish V Badarkhe 	},
354ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
355ad43c49eSManish V Badarkhe 		[0] = {
356ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_content_pk,
357ad43c49eSManish V Badarkhe 			.data = {
358ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
359ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
360ad43c49eSManish V Badarkhe 			}
361ad43c49eSManish V Badarkhe 		}
362ad43c49eSManish V Badarkhe 	}
363ad43c49eSManish V Badarkhe };
364ad43c49eSManish V Badarkhe static const auth_img_desc_t trusted_os_fw_content_cert = {
365ad43c49eSManish V Badarkhe 	.img_id = TRUSTED_OS_FW_CONTENT_CERT_ID,
366ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
367ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_key_cert,
368ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
369ad43c49eSManish V Badarkhe 		[0] = {
370ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
371ad43c49eSManish V Badarkhe 			.param.sig = {
372ad43c49eSManish V Badarkhe 				.pk = &tos_fw_content_pk,
373ad43c49eSManish V Badarkhe 				.sig = &sig,
374ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
375ad43c49eSManish V Badarkhe 				.data = &raw_data
376ad43c49eSManish V Badarkhe 			}
377ad43c49eSManish V Badarkhe 		},
378ad43c49eSManish V Badarkhe 		[1] = {
379ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
380ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
381ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &trusted_nv_ctr,
382ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &trusted_nv_ctr
383ad43c49eSManish V Badarkhe 			}
384ad43c49eSManish V Badarkhe 		}
385ad43c49eSManish V Badarkhe 	},
386ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
387ad43c49eSManish V Badarkhe 		[0] = {
388ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_hash,
389ad43c49eSManish V Badarkhe 			.data = {
390ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_hash_buf,
391ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
392ad43c49eSManish V Badarkhe 			}
393ad43c49eSManish V Badarkhe 		},
394ad43c49eSManish V Badarkhe 		[1] = {
395ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_extra1_hash,
396ad43c49eSManish V Badarkhe 			.data = {
397ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_extra1_hash_buf,
398ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
399ad43c49eSManish V Badarkhe 			}
400ad43c49eSManish V Badarkhe 		},
401ad43c49eSManish V Badarkhe 		[2] = {
402ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_extra2_hash,
403ad43c49eSManish V Badarkhe 			.data = {
404ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_extra2_hash_buf,
405ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
406ad43c49eSManish V Badarkhe 			}
407ad43c49eSManish V Badarkhe 		},
408ad43c49eSManish V Badarkhe 		[3] = {
409ad43c49eSManish V Badarkhe 			.type_desc = &tos_fw_config_hash,
410ad43c49eSManish V Badarkhe 			.data = {
411ad43c49eSManish V Badarkhe 				.ptr = (void *)tos_fw_config_hash_buf,
412ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
413ad43c49eSManish V Badarkhe 			}
414ad43c49eSManish V Badarkhe 		}
415ad43c49eSManish V Badarkhe 	}
416ad43c49eSManish V Badarkhe };
417ad43c49eSManish V Badarkhe static const auth_img_desc_t bl32_image = {
418ad43c49eSManish V Badarkhe 	.img_id = BL32_IMAGE_ID,
419ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
420ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
421ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
422ad43c49eSManish V Badarkhe 		[0] = {
423ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
424ad43c49eSManish V Badarkhe 			.param.hash = {
425ad43c49eSManish V Badarkhe 				.data = &raw_data,
426ad43c49eSManish V Badarkhe 				.hash = &tos_fw_hash
427ad43c49eSManish V Badarkhe 			}
428ad43c49eSManish V Badarkhe 		}
429ad43c49eSManish V Badarkhe 	}
430ad43c49eSManish V Badarkhe };
431ad43c49eSManish V Badarkhe static const auth_img_desc_t bl32_extra1_image = {
432ad43c49eSManish V Badarkhe 	.img_id = BL32_EXTRA1_IMAGE_ID,
433ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
434ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
435ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
436ad43c49eSManish V Badarkhe 		[0] = {
437ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
438ad43c49eSManish V Badarkhe 			.param.hash = {
439ad43c49eSManish V Badarkhe 				.data = &raw_data,
440ad43c49eSManish V Badarkhe 				.hash = &tos_fw_extra1_hash
441ad43c49eSManish V Badarkhe 			}
442ad43c49eSManish V Badarkhe 		}
443ad43c49eSManish V Badarkhe 	}
444ad43c49eSManish V Badarkhe };
445ad43c49eSManish V Badarkhe static const auth_img_desc_t bl32_extra2_image = {
446ad43c49eSManish V Badarkhe 	.img_id = BL32_EXTRA2_IMAGE_ID,
447ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
448ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
449ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
450ad43c49eSManish V Badarkhe 		[0] = {
451ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
452ad43c49eSManish V Badarkhe 			.param.hash = {
453ad43c49eSManish V Badarkhe 				.data = &raw_data,
454ad43c49eSManish V Badarkhe 				.hash = &tos_fw_extra2_hash
455ad43c49eSManish V Badarkhe 			}
456ad43c49eSManish V Badarkhe 		}
457ad43c49eSManish V Badarkhe 	}
458ad43c49eSManish V Badarkhe };
459ad43c49eSManish V Badarkhe /* TOS FW Config */
460ad43c49eSManish V Badarkhe static const auth_img_desc_t tos_fw_config = {
461ad43c49eSManish V Badarkhe 	.img_id = TOS_FW_CONFIG_ID,
462ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
463ad43c49eSManish V Badarkhe 	.parent = &trusted_os_fw_content_cert,
464ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
465ad43c49eSManish V Badarkhe 		[0] = {
466ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
467ad43c49eSManish V Badarkhe 			.param.hash = {
468ad43c49eSManish V Badarkhe 				.data = &raw_data,
469ad43c49eSManish V Badarkhe 				.hash = &tos_fw_config_hash
470ad43c49eSManish V Badarkhe 			}
471ad43c49eSManish V Badarkhe 		}
472ad43c49eSManish V Badarkhe 	}
473ad43c49eSManish V Badarkhe };
474ad43c49eSManish V Badarkhe /*
475ad43c49eSManish V Badarkhe  * Non-Trusted Firmware
476ad43c49eSManish V Badarkhe  */
477ad43c49eSManish V Badarkhe static const auth_img_desc_t non_trusted_fw_key_cert = {
478ad43c49eSManish V Badarkhe 	.img_id = NON_TRUSTED_FW_KEY_CERT_ID,
479ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
480ad43c49eSManish V Badarkhe 	.parent = &trusted_key_cert,
481ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
482ad43c49eSManish V Badarkhe 		[0] = {
483ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
484ad43c49eSManish V Badarkhe 			.param.sig = {
485ad43c49eSManish V Badarkhe 				.pk = &non_trusted_world_pk,
486ad43c49eSManish V Badarkhe 				.sig = &sig,
487ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
488ad43c49eSManish V Badarkhe 				.data = &raw_data
489ad43c49eSManish V Badarkhe 			}
490ad43c49eSManish V Badarkhe 		},
491ad43c49eSManish V Badarkhe 		[1] = {
492ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
493ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
494ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &non_trusted_nv_ctr,
495ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &non_trusted_nv_ctr
496ad43c49eSManish V Badarkhe 			}
497ad43c49eSManish V Badarkhe 		}
498ad43c49eSManish V Badarkhe 	},
499ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
500ad43c49eSManish V Badarkhe 		[0] = {
501ad43c49eSManish V Badarkhe 			.type_desc = &nt_fw_content_pk,
502ad43c49eSManish V Badarkhe 			.data = {
503ad43c49eSManish V Badarkhe 				.ptr = (void *)content_pk_buf,
504ad43c49eSManish V Badarkhe 				.len = (unsigned int)PK_DER_LEN
505ad43c49eSManish V Badarkhe 			}
506ad43c49eSManish V Badarkhe 		}
507ad43c49eSManish V Badarkhe 	}
508ad43c49eSManish V Badarkhe };
509ad43c49eSManish V Badarkhe static const auth_img_desc_t non_trusted_fw_content_cert = {
510ad43c49eSManish V Badarkhe 	.img_id = NON_TRUSTED_FW_CONTENT_CERT_ID,
511ad43c49eSManish V Badarkhe 	.img_type = IMG_CERT,
512ad43c49eSManish V Badarkhe 	.parent = &non_trusted_fw_key_cert,
513ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
514ad43c49eSManish V Badarkhe 		[0] = {
515ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_SIG,
516ad43c49eSManish V Badarkhe 			.param.sig = {
517ad43c49eSManish V Badarkhe 				.pk = &nt_fw_content_pk,
518ad43c49eSManish V Badarkhe 				.sig = &sig,
519ad43c49eSManish V Badarkhe 				.alg = &sig_alg,
520ad43c49eSManish V Badarkhe 				.data = &raw_data
521ad43c49eSManish V Badarkhe 			}
522ad43c49eSManish V Badarkhe 		},
523ad43c49eSManish V Badarkhe 		[1] = {
524ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_NV_CTR,
525ad43c49eSManish V Badarkhe 			.param.nv_ctr = {
526ad43c49eSManish V Badarkhe 				.cert_nv_ctr = &non_trusted_nv_ctr,
527ad43c49eSManish V Badarkhe 				.plat_nv_ctr = &non_trusted_nv_ctr
528ad43c49eSManish V Badarkhe 			}
529ad43c49eSManish V Badarkhe 		}
530ad43c49eSManish V Badarkhe 	},
531ad43c49eSManish V Badarkhe 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
532ad43c49eSManish V Badarkhe 		[0] = {
533ad43c49eSManish V Badarkhe 			.type_desc = &nt_world_bl_hash,
534ad43c49eSManish V Badarkhe 			.data = {
535ad43c49eSManish V Badarkhe 				.ptr = (void *)nt_world_bl_hash_buf,
536ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
537ad43c49eSManish V Badarkhe 			}
538ad43c49eSManish V Badarkhe 		},
539ad43c49eSManish V Badarkhe 		[1] = {
540ad43c49eSManish V Badarkhe 			.type_desc = &nt_fw_config_hash,
541ad43c49eSManish V Badarkhe 			.data = {
542ad43c49eSManish V Badarkhe 				.ptr = (void *)nt_fw_config_hash_buf,
543ad43c49eSManish V Badarkhe 				.len = (unsigned int)HASH_DER_LEN
544ad43c49eSManish V Badarkhe 			}
545ad43c49eSManish V Badarkhe 		}
546ad43c49eSManish V Badarkhe 	}
547ad43c49eSManish V Badarkhe };
548ad43c49eSManish V Badarkhe static const auth_img_desc_t bl33_image = {
549ad43c49eSManish V Badarkhe 	.img_id = BL33_IMAGE_ID,
550ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
551ad43c49eSManish V Badarkhe 	.parent = &non_trusted_fw_content_cert,
552ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
553ad43c49eSManish V Badarkhe 		[0] = {
554ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
555ad43c49eSManish V Badarkhe 			.param.hash = {
556ad43c49eSManish V Badarkhe 				.data = &raw_data,
557ad43c49eSManish V Badarkhe 				.hash = &nt_world_bl_hash
558ad43c49eSManish V Badarkhe 			}
559ad43c49eSManish V Badarkhe 		}
560ad43c49eSManish V Badarkhe 	}
561ad43c49eSManish V Badarkhe };
562ad43c49eSManish V Badarkhe /* NT FW Config */
563ad43c49eSManish V Badarkhe static const auth_img_desc_t nt_fw_config = {
564ad43c49eSManish V Badarkhe 	.img_id = NT_FW_CONFIG_ID,
565ad43c49eSManish V Badarkhe 	.img_type = IMG_RAW,
566ad43c49eSManish V Badarkhe 	.parent = &non_trusted_fw_content_cert,
567ad43c49eSManish V Badarkhe 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
568ad43c49eSManish V Badarkhe 		[0] = {
569ad43c49eSManish V Badarkhe 			.type = AUTH_METHOD_HASH,
570ad43c49eSManish V Badarkhe 			.param.hash = {
571ad43c49eSManish V Badarkhe 				.data = &raw_data,
572ad43c49eSManish V Badarkhe 				.hash = &nt_fw_config_hash
573ad43c49eSManish V Badarkhe 			}
574ad43c49eSManish V Badarkhe 		}
575ad43c49eSManish V Badarkhe 	}
576ad43c49eSManish V Badarkhe };
57768758dd6SManish Pandey /* Secure Partitions */
57868758dd6SManish Pandey #if defined(SPD_spmd)
57903a5225cSManish Pandey static const auth_img_desc_t sip_sp_content_cert = {
58003a5225cSManish Pandey 	.img_id = SIP_SP_CONTENT_CERT_ID,
58168758dd6SManish Pandey 	.img_type = IMG_CERT,
58268758dd6SManish Pandey 	.parent = &trusted_key_cert,
58368758dd6SManish Pandey 	.img_auth_methods = (const auth_method_desc_t[AUTH_METHOD_NUM]) {
58468758dd6SManish Pandey 		[0] = {
58568758dd6SManish Pandey 			.type = AUTH_METHOD_SIG,
58668758dd6SManish Pandey 			.param.sig = {
58768758dd6SManish Pandey 				.pk = &trusted_world_pk,
58868758dd6SManish Pandey 				.sig = &sig,
58968758dd6SManish Pandey 				.alg = &sig_alg,
59068758dd6SManish Pandey 				.data = &raw_data
59168758dd6SManish Pandey 			}
59268758dd6SManish Pandey 		},
59368758dd6SManish Pandey 		[1] = {
59468758dd6SManish Pandey 			.type = AUTH_METHOD_NV_CTR,
59568758dd6SManish Pandey 			.param.nv_ctr = {
59668758dd6SManish Pandey 				.cert_nv_ctr = &trusted_nv_ctr,
59768758dd6SManish Pandey 				.plat_nv_ctr = &trusted_nv_ctr
59868758dd6SManish Pandey 			}
59968758dd6SManish Pandey 		}
60068758dd6SManish Pandey 	},
60168758dd6SManish Pandey 	.authenticated_data = (const auth_param_desc_t[COT_MAX_VERIFIED_PARAMS]) {
60268758dd6SManish Pandey 		[0] = {
60368758dd6SManish Pandey 			.type_desc = &sp_pkg1_hash,
60468758dd6SManish Pandey 			.data = {
60568758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[0],
60668758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
60768758dd6SManish Pandey 			}
60868758dd6SManish Pandey 		},
60968758dd6SManish Pandey 		[1] = {
61068758dd6SManish Pandey 			.type_desc = &sp_pkg2_hash,
61168758dd6SManish Pandey 			.data = {
61268758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[1],
61368758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
61468758dd6SManish Pandey 			}
61568758dd6SManish Pandey 		},
61668758dd6SManish Pandey 		[2] = {
61768758dd6SManish Pandey 			.type_desc = &sp_pkg3_hash,
61868758dd6SManish Pandey 			.data = {
61968758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[2],
62068758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
62168758dd6SManish Pandey 			}
62268758dd6SManish Pandey 		},
62368758dd6SManish Pandey 		[3] = {
62468758dd6SManish Pandey 			.type_desc = &sp_pkg4_hash,
62568758dd6SManish Pandey 			.data = {
62668758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[3],
62768758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
62868758dd6SManish Pandey 			}
62968758dd6SManish Pandey 		},
63068758dd6SManish Pandey 		[4] = {
63168758dd6SManish Pandey 			.type_desc = &sp_pkg5_hash,
63268758dd6SManish Pandey 			.data = {
63368758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[4],
63468758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
63568758dd6SManish Pandey 			}
63668758dd6SManish Pandey 		},
63768758dd6SManish Pandey 		[5] = {
63868758dd6SManish Pandey 			.type_desc = &sp_pkg6_hash,
63968758dd6SManish Pandey 			.data = {
64068758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[5],
64168758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
64268758dd6SManish Pandey 			}
64368758dd6SManish Pandey 		},
64468758dd6SManish Pandey 		[6] = {
64568758dd6SManish Pandey 			.type_desc = &sp_pkg7_hash,
64668758dd6SManish Pandey 			.data = {
64768758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[6],
64868758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
64968758dd6SManish Pandey 			}
65068758dd6SManish Pandey 		},
65168758dd6SManish Pandey 		[7] = {
65268758dd6SManish Pandey 			.type_desc = &sp_pkg8_hash,
65368758dd6SManish Pandey 			.data = {
65468758dd6SManish Pandey 				.ptr = (void *)sp_pkg_hash_buf[7],
65568758dd6SManish Pandey 				.len = (unsigned int)HASH_DER_LEN
65668758dd6SManish Pandey 			}
65768758dd6SManish Pandey 		}
65868758dd6SManish Pandey 	}
65968758dd6SManish Pandey };
66068758dd6SManish Pandey 
66103a5225cSManish Pandey DEFINE_SIP_SP_PKG(1);
66203a5225cSManish Pandey DEFINE_SIP_SP_PKG(2);
66303a5225cSManish Pandey DEFINE_SIP_SP_PKG(3);
66403a5225cSManish Pandey DEFINE_SIP_SP_PKG(4);
66503a5225cSManish Pandey DEFINE_SIP_SP_PKG(5);
66603a5225cSManish Pandey DEFINE_SIP_SP_PKG(6);
66703a5225cSManish Pandey DEFINE_SIP_SP_PKG(7);
66803a5225cSManish Pandey DEFINE_SIP_SP_PKG(8);
66968758dd6SManish Pandey #endif /* SPD_spmd */
670ad43c49eSManish V Badarkhe 
671ad43c49eSManish V Badarkhe static const auth_img_desc_t * const cot_desc[] = {
672ad43c49eSManish V Badarkhe 	[TRUSTED_BOOT_FW_CERT_ID]		=	&trusted_boot_fw_cert,
673ad43c49eSManish V Badarkhe 	[HW_CONFIG_ID]				=	&hw_config,
674ad43c49eSManish V Badarkhe 	[TRUSTED_KEY_CERT_ID]			=	&trusted_key_cert,
675ad43c49eSManish V Badarkhe 	[SCP_FW_KEY_CERT_ID]			=	&scp_fw_key_cert,
676ad43c49eSManish V Badarkhe 	[SCP_FW_CONTENT_CERT_ID]		=	&scp_fw_content_cert,
677ad43c49eSManish V Badarkhe 	[SCP_BL2_IMAGE_ID]			=	&scp_bl2_image,
678ad43c49eSManish V Badarkhe 	[SOC_FW_KEY_CERT_ID]			=	&soc_fw_key_cert,
679ad43c49eSManish V Badarkhe 	[SOC_FW_CONTENT_CERT_ID]		=	&soc_fw_content_cert,
680ad43c49eSManish V Badarkhe 	[BL31_IMAGE_ID]				=	&bl31_image,
681ad43c49eSManish V Badarkhe 	[SOC_FW_CONFIG_ID]			=	&soc_fw_config,
682ad43c49eSManish V Badarkhe 	[TRUSTED_OS_FW_KEY_CERT_ID]		=	&trusted_os_fw_key_cert,
683ad43c49eSManish V Badarkhe 	[TRUSTED_OS_FW_CONTENT_CERT_ID]		=	&trusted_os_fw_content_cert,
684ad43c49eSManish V Badarkhe 	[BL32_IMAGE_ID]				=	&bl32_image,
685ad43c49eSManish V Badarkhe 	[BL32_EXTRA1_IMAGE_ID]			=	&bl32_extra1_image,
686ad43c49eSManish V Badarkhe 	[BL32_EXTRA2_IMAGE_ID]			=	&bl32_extra2_image,
687ad43c49eSManish V Badarkhe 	[TOS_FW_CONFIG_ID]			=	&tos_fw_config,
688ad43c49eSManish V Badarkhe 	[NON_TRUSTED_FW_KEY_CERT_ID]		=	&non_trusted_fw_key_cert,
689ad43c49eSManish V Badarkhe 	[NON_TRUSTED_FW_CONTENT_CERT_ID]	=	&non_trusted_fw_content_cert,
690ad43c49eSManish V Badarkhe 	[BL33_IMAGE_ID]				=	&bl33_image,
691ad43c49eSManish V Badarkhe 	[NT_FW_CONFIG_ID]			=	&nt_fw_config,
69268758dd6SManish Pandey #if defined(SPD_spmd)
69303a5225cSManish Pandey 	[SIP_SP_CONTENT_CERT_ID]		=	&sip_sp_content_cert,
69403a5225cSManish Pandey 	[SP_PKG1_ID]				=	&sp_pkg1,
69503a5225cSManish Pandey 	[SP_PKG2_ID]				=	&sp_pkg2,
69603a5225cSManish Pandey 	[SP_PKG3_ID]				=	&sp_pkg3,
69703a5225cSManish Pandey 	[SP_PKG4_ID]				=	&sp_pkg4,
69803a5225cSManish Pandey 	[SP_PKG5_ID]				=	&sp_pkg5,
69903a5225cSManish Pandey 	[SP_PKG6_ID]				=	&sp_pkg6,
70003a5225cSManish Pandey 	[SP_PKG7_ID]				=	&sp_pkg7,
70103a5225cSManish Pandey 	[SP_PKG8_ID]				=       &sp_pkg8,
70268758dd6SManish Pandey #endif
703ad43c49eSManish V Badarkhe };
704ad43c49eSManish V Badarkhe 
705ad43c49eSManish V Badarkhe /* Register the CoT in the authentication module */
706ad43c49eSManish V Badarkhe REGISTER_COT(cot_desc);
707