blob: 60bafb4be8e1a3f6f08efc66d2d9083ae99c94f5 [file] [log] [blame]
Juan Castillo11abdcd2014-10-21 11:30:42 +01001/*
Manish V Badarkhea1ffcf72020-06-11 21:08:45 +01002 * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
Juan Castillo11abdcd2014-10-21 11:30:42 +01003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Juan Castillo11abdcd2014-10-21 11:30:42 +01005 */
6
7#include <stdio.h>
8#include <string.h>
9#include <openssl/err.h>
10#include <openssl/x509v3.h>
Masahiro Yamadaa27c1662017-05-22 12:11:24 +090011
12#if USE_TBBR_DEFS
13#include <tbbr_oid.h>
14#else
15#include <platform_oid.h>
16#endif
17
Juan Castillo11abdcd2014-10-21 11:30:42 +010018#include "ext.h"
Juan Castilloe6d30e92015-06-12 11:27:59 +010019#include "tbbr/tbb_ext.h"
20#include "tbbr/tbb_key.h"
Juan Castillo11abdcd2014-10-21 11:30:42 +010021
Juan Castilloe6d30e92015-06-12 11:27:59 +010022static ext_t tbb_ext[] = {
Juan Castillobe801202015-12-03 10:19:21 +000023 [TRUSTED_FW_NVCOUNTER_EXT] = {
24 .oid = TRUSTED_FW_NVCOUNTER_OID,
Juan Castillo43529982016-01-22 11:05:24 +000025 .opt = "tfw-nvctr",
26 .help_msg = "Trusted Firmware Non-Volatile counter value",
Juan Castilloe6d30e92015-06-12 11:27:59 +010027 .sn = "TrustedWorldNVCounter",
28 .ln = "Trusted World Non-Volatile counter",
29 .asn1_type = V_ASN1_INTEGER,
30 .type = EXT_TYPE_NVCOUNTER,
Juan Castillo43529982016-01-22 11:05:24 +000031 .attr.nvctr_type = NVCTR_TYPE_TFW
Juan Castillo11abdcd2014-10-21 11:30:42 +010032 },
Juan Castillobe801202015-12-03 10:19:21 +000033 [NON_TRUSTED_FW_NVCOUNTER_EXT] = {
34 .oid = NON_TRUSTED_FW_NVCOUNTER_OID,
Juan Castillo43529982016-01-22 11:05:24 +000035 .opt = "ntfw-nvctr",
36 .help_msg = "Non-Trusted Firmware Non-Volatile counter value",
Juan Castilloe6d30e92015-06-12 11:27:59 +010037 .sn = "NormalWorldNVCounter",
Juan Castillo43529982016-01-22 11:05:24 +000038 .ln = "Non-Trusted Firmware Non-Volatile counter",
Juan Castilloe6d30e92015-06-12 11:27:59 +010039 .asn1_type = V_ASN1_INTEGER,
40 .type = EXT_TYPE_NVCOUNTER,
Juan Castillo43529982016-01-22 11:05:24 +000041 .attr.nvctr_type = NVCTR_TYPE_NTFW
Juan Castillo11abdcd2014-10-21 11:30:42 +010042 },
Juan Castillobe801202015-12-03 10:19:21 +000043 [TRUSTED_BOOT_FW_HASH_EXT] = {
44 .oid = TRUSTED_BOOT_FW_HASH_OID,
45 .opt = "tb-fw",
Juan Castillo212f7382015-12-15 16:37:57 +000046 .help_msg = "Trusted Boot Firmware image file",
Juan Castillo11abdcd2014-10-21 11:30:42 +010047 .sn = "TrustedBootFirmwareHash",
Juan Castillobe801202015-12-03 10:19:21 +000048 .ln = "Trusted Boot Firmware hash (SHA256)",
Juan Castilloe6d30e92015-06-12 11:27:59 +010049 .asn1_type = V_ASN1_OCTET_STRING,
50 .type = EXT_TYPE_HASH
Juan Castillo11abdcd2014-10-21 11:30:42 +010051 },
Soby Mathew2ffb4732017-11-07 16:50:31 +000052 [TRUSTED_BOOT_FW_CONFIG_HASH_EXT] = {
53 .oid = TRUSTED_BOOT_FW_CONFIG_HASH_OID,
54 .opt = "tb-fw-config",
55 .help_msg = "Trusted Boot Firmware Config file",
56 .sn = "TrustedBootFirmwareConfigHash",
57 .ln = "Trusted Boot Firmware Config hash",
58 .asn1_type = V_ASN1_OCTET_STRING,
59 .type = EXT_TYPE_HASH,
60 .optional = 1
61 },
62 [HW_CONFIG_HASH_EXT] = {
63 .oid = HW_CONFIG_HASH_OID,
64 .opt = "hw-config",
65 .help_msg = "HW Config file",
66 .sn = "HWConfigHash",
67 .ln = "HW Config hash",
68 .asn1_type = V_ASN1_OCTET_STRING,
69 .type = EXT_TYPE_HASH,
70 .optional = 1
71 },
Manish V Badarkhea1ffcf72020-06-11 21:08:45 +010072 [FW_CONFIG_HASH_EXT] = {
73 .oid = FW_CONFIG_HASH_OID,
74 .opt = "fw-config",
75 .help_msg = "Firmware Config file",
76 .sn = "FirmwareConfigHash",
77 .ln = "Firmware Config hash",
78 .asn1_type = V_ASN1_OCTET_STRING,
79 .type = EXT_TYPE_HASH,
80 .optional = 1
81 },
Juan Castillobe801202015-12-03 10:19:21 +000082 [TRUSTED_WORLD_PK_EXT] = {
83 .oid = TRUSTED_WORLD_PK_OID,
Juan Castillo11abdcd2014-10-21 11:30:42 +010084 .sn = "TrustedWorldPublicKey",
85 .ln = "Trusted World Public Key",
Juan Castilloe6d30e92015-06-12 11:27:59 +010086 .asn1_type = V_ASN1_OCTET_STRING,
87 .type = EXT_TYPE_PKEY,
Juan Castillo43529982016-01-22 11:05:24 +000088 .attr.key = TRUSTED_WORLD_KEY
Juan Castillo11abdcd2014-10-21 11:30:42 +010089 },
Juan Castillobe801202015-12-03 10:19:21 +000090 [NON_TRUSTED_WORLD_PK_EXT] = {
91 .oid = NON_TRUSTED_WORLD_PK_OID,
Juan Castillo11abdcd2014-10-21 11:30:42 +010092 .sn = "NonTrustedWorldPublicKey",
93 .ln = "Non-Trusted World Public Key",
Juan Castilloe6d30e92015-06-12 11:27:59 +010094 .asn1_type = V_ASN1_OCTET_STRING,
95 .type = EXT_TYPE_PKEY,
Juan Castillo43529982016-01-22 11:05:24 +000096 .attr.key = NON_TRUSTED_WORLD_KEY
Juan Castillo11abdcd2014-10-21 11:30:42 +010097 },
Juan Castillobe801202015-12-03 10:19:21 +000098 [SCP_FW_CONTENT_CERT_PK_EXT] = {
99 .oid = SCP_FW_CONTENT_CERT_PK_OID,
Juan Castillo11abdcd2014-10-21 11:30:42 +0100100 .sn = "SCPFirmwareContentCertPK",
101 .ln = "SCP Firmware content certificate public key",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100102 .asn1_type = V_ASN1_OCTET_STRING,
103 .type = EXT_TYPE_PKEY,
Juan Castillo43529982016-01-22 11:05:24 +0000104 .attr.key = SCP_FW_CONTENT_CERT_KEY
Juan Castillo11abdcd2014-10-21 11:30:42 +0100105 },
Juan Castillobe801202015-12-03 10:19:21 +0000106 [SCP_FW_HASH_EXT] = {
107 .oid = SCP_FW_HASH_OID,
108 .opt = "scp-fw",
Juan Castillo212f7382015-12-15 16:37:57 +0000109 .help_msg = "SCP Firmware image file",
Juan Castillo11abdcd2014-10-21 11:30:42 +0100110 .sn = "SCPFirmwareHash",
Juan Castillobe801202015-12-03 10:19:21 +0000111 .ln = "SCP Firmware hash (SHA256)",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100112 .asn1_type = V_ASN1_OCTET_STRING,
113 .type = EXT_TYPE_HASH
Juan Castillo11abdcd2014-10-21 11:30:42 +0100114 },
Juan Castillobe801202015-12-03 10:19:21 +0000115 [SOC_FW_CONTENT_CERT_PK_EXT] = {
116 .oid = SOC_FW_CONTENT_CERT_PK_OID,
Juan Castilloe6d30e92015-06-12 11:27:59 +0100117 .sn = "SoCFirmwareContentCertPK",
118 .ln = "SoC Firmware content certificate public key",
119 .asn1_type = V_ASN1_OCTET_STRING,
120 .type = EXT_TYPE_PKEY,
Juan Castillo43529982016-01-22 11:05:24 +0000121 .attr.key = SOC_FW_CONTENT_CERT_KEY
Juan Castilloe6d30e92015-06-12 11:27:59 +0100122 },
Juan Castillobe801202015-12-03 10:19:21 +0000123 [SOC_AP_FW_HASH_EXT] = {
124 .oid = SOC_AP_FW_HASH_OID,
125 .opt = "soc-fw",
Juan Castillo212f7382015-12-15 16:37:57 +0000126 .help_msg = "SoC AP Firmware image file",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100127 .sn = "SoCAPFirmwareHash",
Juan Castillobe801202015-12-03 10:19:21 +0000128 .ln = "SoC AP Firmware hash (SHA256)",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100129 .asn1_type = V_ASN1_OCTET_STRING,
130 .type = EXT_TYPE_HASH
131 },
Soby Mathew2bb78d32018-03-29 14:29:55 +0100132 [SOC_FW_CONFIG_HASH_EXT] = {
133 .oid = SOC_FW_CONFIG_HASH_OID,
134 .opt = "soc-fw-config",
135 .help_msg = "SoC Firmware Config file",
136 .sn = "SocFirmwareConfigHash",
137 .ln = "SoC Firmware Config hash",
138 .asn1_type = V_ASN1_OCTET_STRING,
139 .type = EXT_TYPE_HASH,
140 .optional = 1
141 },
Juan Castillobe801202015-12-03 10:19:21 +0000142 [TRUSTED_OS_FW_CONTENT_CERT_PK_EXT] = {
143 .oid = TRUSTED_OS_FW_CONTENT_CERT_PK_OID,
Juan Castillo11abdcd2014-10-21 11:30:42 +0100144 .sn = "TrustedOSFirmwareContentCertPK",
145 .ln = "Trusted OS Firmware content certificate public key",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100146 .asn1_type = V_ASN1_OCTET_STRING,
147 .type = EXT_TYPE_PKEY,
Juan Castillo43529982016-01-22 11:05:24 +0000148 .attr.key = TRUSTED_OS_FW_CONTENT_CERT_KEY
Juan Castillo11abdcd2014-10-21 11:30:42 +0100149 },
Juan Castillobe801202015-12-03 10:19:21 +0000150 [TRUSTED_OS_FW_HASH_EXT] = {
151 .oid = TRUSTED_OS_FW_HASH_OID,
152 .opt = "tos-fw",
Juan Castillo212f7382015-12-15 16:37:57 +0000153 .help_msg = "Trusted OS image file",
Juan Castillo11abdcd2014-10-21 11:30:42 +0100154 .sn = "TrustedOSHash",
Juan Castillobe801202015-12-03 10:19:21 +0000155 .ln = "Trusted OS hash (SHA256)",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100156 .asn1_type = V_ASN1_OCTET_STRING,
157 .type = EXT_TYPE_HASH
Juan Castillo11abdcd2014-10-21 11:30:42 +0100158 },
Summer Qin80726782017-04-20 16:28:39 +0100159 [TRUSTED_OS_FW_EXTRA1_HASH_EXT] = {
160 .oid = TRUSTED_OS_FW_EXTRA1_HASH_OID,
161 .opt = "tos-fw-extra1",
162 .help_msg = "Trusted OS Extra1 image file",
163 .sn = "TrustedOSExtra1Hash",
164 .ln = "Trusted OS Extra1 hash (SHA256)",
165 .asn1_type = V_ASN1_OCTET_STRING,
166 .type = EXT_TYPE_HASH,
167 .optional = 1
168 },
169 [TRUSTED_OS_FW_EXTRA2_HASH_EXT] = {
170 .oid = TRUSTED_OS_FW_EXTRA2_HASH_OID,
171 .opt = "tos-fw-extra2",
172 .help_msg = "Trusted OS Extra2 image file",
173 .sn = "TrustedOSExtra2Hash",
174 .ln = "Trusted OS Extra2 hash (SHA256)",
175 .asn1_type = V_ASN1_OCTET_STRING,
176 .type = EXT_TYPE_HASH,
177 .optional = 1
178 },
Soby Mathew2bb78d32018-03-29 14:29:55 +0100179 [TRUSTED_OS_FW_CONFIG_HASH_EXT] = {
180 .oid = TRUSTED_OS_FW_CONFIG_HASH_OID,
181 .opt = "tos-fw-config",
182 .help_msg = "Trusted OS Firmware Config file",
183 .sn = "TrustedOSFirmwareConfigHash",
184 .ln = "Trusted OS Firmware Config hash",
185 .asn1_type = V_ASN1_OCTET_STRING,
186 .type = EXT_TYPE_HASH,
187 .optional = 1
188 },
Juan Castillobe801202015-12-03 10:19:21 +0000189 [NON_TRUSTED_FW_CONTENT_CERT_PK_EXT] = {
190 .oid = NON_TRUSTED_FW_CONTENT_CERT_PK_OID,
Juan Castillo11abdcd2014-10-21 11:30:42 +0100191 .sn = "NonTrustedFirmwareContentCertPK",
192 .ln = "Non-Trusted Firmware content certificate public key",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100193 .asn1_type = V_ASN1_OCTET_STRING,
194 .type = EXT_TYPE_PKEY,
Juan Castillo43529982016-01-22 11:05:24 +0000195 .attr.key = NON_TRUSTED_FW_CONTENT_CERT_KEY
Juan Castillo11abdcd2014-10-21 11:30:42 +0100196 },
Juan Castillobe801202015-12-03 10:19:21 +0000197 [NON_TRUSTED_WORLD_BOOTLOADER_HASH_EXT] = {
198 .oid = NON_TRUSTED_WORLD_BOOTLOADER_HASH_OID,
199 .opt = "nt-fw",
Juan Castillo212f7382015-12-15 16:37:57 +0000200 .help_msg = "Non-Trusted World Bootloader image file",
Juan Castillo11abdcd2014-10-21 11:30:42 +0100201 .sn = "NonTrustedWorldBootloaderHash",
Juan Castillobe801202015-12-03 10:19:21 +0000202 .ln = "Non-Trusted World hash (SHA256)",
Juan Castilloe6d30e92015-06-12 11:27:59 +0100203 .asn1_type = V_ASN1_OCTET_STRING,
204 .type = EXT_TYPE_HASH
Yatharth Kochar5752b592015-08-21 15:30:55 +0100205 },
Soby Mathew2bb78d32018-03-29 14:29:55 +0100206 [NON_TRUSTED_FW_CONFIG_HASH_EXT] = {
207 .oid = NON_TRUSTED_FW_CONFIG_HASH_OID,
208 .opt = "nt-fw-config",
209 .help_msg = "Non Trusted OS Firmware Config file",
210 .sn = "NonTrustedOSFirmwareConfigHash",
211 .ln = "Non-Trusted OS Firmware Config hash",
212 .asn1_type = V_ASN1_OCTET_STRING,
213 .type = EXT_TYPE_HASH,
214 .optional = 1
215 },
Manish Pandeyc70b4b42020-06-10 15:50:36 +0100216 [SP_PKG1_HASH_EXT] = {
217 .oid = SP_PKG1_HASH_OID,
218 .opt = "sp-pkg1",
219 .help_msg = "Secure Partition Package1 file",
220 .sn = "SPPkg1Hash",
221 .ln = "SP Pkg1 hash (SHA256)",
222 .asn1_type = V_ASN1_OCTET_STRING,
223 .type = EXT_TYPE_HASH,
224 .optional = 1
225 },
226 [SP_PKG2_HASH_EXT] = {
227 .oid = SP_PKG2_HASH_OID,
228 .opt = "sp-pkg2",
229 .help_msg = "Secure Partition Package2 file",
230 .sn = "SPPkg2Hash",
231 .ln = "SP Pkg2 hash (SHA256)",
232 .asn1_type = V_ASN1_OCTET_STRING,
233 .type = EXT_TYPE_HASH,
234 .optional = 1
235 },
236 [SP_PKG3_HASH_EXT] = {
237 .oid = SP_PKG3_HASH_OID,
238 .opt = "sp-pkg3",
239 .help_msg = "Secure Partition Package3 file",
240 .sn = "SPPkg3Hash",
241 .ln = "SP Pkg3 hash (SHA256)",
242 .asn1_type = V_ASN1_OCTET_STRING,
243 .type = EXT_TYPE_HASH,
244 .optional = 1
245 },
246 [SP_PKG4_HASH_EXT] = {
247 .oid = SP_PKG4_HASH_OID,
248 .opt = "sp-pkg4",
249 .help_msg = "Secure Partition Package4 file",
250 .sn = "SPPkg4Hash",
251 .ln = "SP Pkg4 hash (SHA256)",
252 .asn1_type = V_ASN1_OCTET_STRING,
253 .type = EXT_TYPE_HASH,
254 .optional = 1
255 },
256 [SP_PKG5_HASH_EXT] = {
257 .oid = SP_PKG5_HASH_OID,
258 .opt = "sp-pkg5",
259 .help_msg = "Secure Partition Package5 file",
260 .sn = "SPPkg5Hash",
261 .ln = "SP Pkg5 hash (SHA256)",
262 .asn1_type = V_ASN1_OCTET_STRING,
263 .type = EXT_TYPE_HASH,
264 .optional = 1
265 },
266 [SP_PKG6_HASH_EXT] = {
267 .oid = SP_PKG6_HASH_OID,
268 .opt = "sp-pkg6",
269 .help_msg = "Secure Partition Package6 file",
270 .sn = "SPPkg6Hash",
271 .ln = "SP Pkg6 hash (SHA256)",
272 .asn1_type = V_ASN1_OCTET_STRING,
273 .type = EXT_TYPE_HASH,
274 .optional = 1
275 },
276 [SP_PKG7_HASH_EXT] = {
277 .oid = SP_PKG7_HASH_OID,
278 .opt = "sp-pkg7",
279 .help_msg = "Secure Partition Package7 file",
280 .sn = "SPPkg7Hash",
281 .ln = "SP Pkg7 hash (SHA256)",
282 .asn1_type = V_ASN1_OCTET_STRING,
283 .type = EXT_TYPE_HASH,
284 .optional = 1
285 },
286 [SP_PKG8_HASH_EXT] = {
287 .oid = SP_PKG8_HASH_OID,
288 .opt = "sp-pkg8",
289 .help_msg = "Secure Partition Package8 file",
290 .sn = "SPPkg8Hash",
291 .ln = "SP Pkg8 hash (SHA256)",
292 .asn1_type = V_ASN1_OCTET_STRING,
293 .type = EXT_TYPE_HASH,
294 .optional = 1
295 },
Juan Castillobe801202015-12-03 10:19:21 +0000296 [SCP_FWU_CFG_HASH_EXT] = {
297 .oid = SCP_FWU_CFG_HASH_OID,
298 .opt = "scp-fwu-cfg",
Juan Castillo212f7382015-12-15 16:37:57 +0000299 .help_msg = "SCP Firmware Update Config image file",
Yatharth Kochar5752b592015-08-21 15:30:55 +0100300 .sn = "SCPFWUpdateConfig",
Juan Castillobe801202015-12-03 10:19:21 +0000301 .ln = "SCP Firmware Update Config hash (SHA256)",
Yatharth Kochar5752b592015-08-21 15:30:55 +0100302 .asn1_type = V_ASN1_OCTET_STRING,
303 .type = EXT_TYPE_HASH,
304 .optional = 1
305 },
Juan Castillobe801202015-12-03 10:19:21 +0000306 [AP_FWU_CFG_HASH_EXT] = {
307 .oid = AP_FWU_CFG_HASH_OID,
308 .opt = "ap-fwu-cfg",
Juan Castillo212f7382015-12-15 16:37:57 +0000309 .help_msg = "AP Firmware Update Config image file",
Yatharth Kochar5752b592015-08-21 15:30:55 +0100310 .sn = "APFWUpdateConfig",
Juan Castillobe801202015-12-03 10:19:21 +0000311 .ln = "AP Firmware Update Config hash (SHA256)",
Yatharth Kochar5752b592015-08-21 15:30:55 +0100312 .asn1_type = V_ASN1_OCTET_STRING,
313 .type = EXT_TYPE_HASH,
314 .optional = 1
315 },
Juan Castillobe801202015-12-03 10:19:21 +0000316 [FWU_HASH_EXT] = {
317 .oid = FWU_HASH_OID,
318 .opt = "fwu",
Juan Castillo212f7382015-12-15 16:37:57 +0000319 .help_msg = "Firmware Updater image file",
Yatharth Kochar5752b592015-08-21 15:30:55 +0100320 .sn = "FWUpdaterHash",
Juan Castillobe801202015-12-03 10:19:21 +0000321 .ln = "Firmware Updater hash (SHA256)",
Yatharth Kochar5752b592015-08-21 15:30:55 +0100322 .asn1_type = V_ASN1_OCTET_STRING,
323 .type = EXT_TYPE_HASH,
324 .optional = 1
Juan Castilloe6d30e92015-06-12 11:27:59 +0100325 }
Juan Castillo11abdcd2014-10-21 11:30:42 +0100326};
Juan Castilloe6d30e92015-06-12 11:27:59 +0100327
328REGISTER_EXTENSIONS(tbb_ext);