155e291a4SJuan Castillo /* 255e291a4SJuan Castillo * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. 355e291a4SJuan Castillo * 4*82cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 555e291a4SJuan Castillo */ 655e291a4SJuan Castillo 755e291a4SJuan Castillo #include <stdio.h> 855e291a4SJuan Castillo #include <string.h> 955e291a4SJuan Castillo #include <openssl/err.h> 1055e291a4SJuan Castillo #include <openssl/x509v3.h> 1155e291a4SJuan Castillo #include "ext.h" 1255e291a4SJuan Castillo #include "platform_oid.h" 1355e291a4SJuan Castillo #include "tbbr/tbb_ext.h" 1455e291a4SJuan Castillo #include "tbbr/tbb_key.h" 1555e291a4SJuan Castillo 1655e291a4SJuan Castillo /* TODO: get these values from the command line */ 1755e291a4SJuan Castillo #define TRUSTED_WORLD_NVCTR_VALUE 0 1855e291a4SJuan Castillo #define NORMAL_WORLD_NVCTR_VALUE 0 1955e291a4SJuan Castillo 2055e291a4SJuan Castillo static ext_t tbb_ext[] = { 21516beb58SJuan Castillo [TRUSTED_FW_NVCOUNTER_EXT] = { 22516beb58SJuan Castillo .oid = TRUSTED_FW_NVCOUNTER_OID, 2396103d5aSJuan Castillo .opt = "tfw-nvctr", 2496103d5aSJuan Castillo .help_msg = "Trusted Firmware Non-Volatile counter value", 2555e291a4SJuan Castillo .sn = "TrustedWorldNVCounter", 2655e291a4SJuan Castillo .ln = "Trusted World Non-Volatile counter", 2755e291a4SJuan Castillo .asn1_type = V_ASN1_INTEGER, 2855e291a4SJuan Castillo .type = EXT_TYPE_NVCOUNTER, 2996103d5aSJuan Castillo .attr.nvctr_type = NVCTR_TYPE_TFW 3055e291a4SJuan Castillo }, 31516beb58SJuan Castillo [NON_TRUSTED_FW_NVCOUNTER_EXT] = { 32516beb58SJuan Castillo .oid = NON_TRUSTED_FW_NVCOUNTER_OID, 3396103d5aSJuan Castillo .opt = "ntfw-nvctr", 3496103d5aSJuan Castillo .help_msg = "Non-Trusted Firmware Non-Volatile counter value", 3555e291a4SJuan Castillo .sn = "NormalWorldNVCounter", 3696103d5aSJuan Castillo .ln = "Non-Trusted Firmware Non-Volatile counter", 3755e291a4SJuan Castillo .asn1_type = V_ASN1_INTEGER, 3855e291a4SJuan Castillo .type = EXT_TYPE_NVCOUNTER, 3996103d5aSJuan Castillo .attr.nvctr_type = NVCTR_TYPE_NTFW 4055e291a4SJuan Castillo }, 41516beb58SJuan Castillo [TRUSTED_BOOT_FW_HASH_EXT] = { 42516beb58SJuan Castillo .oid = TRUSTED_BOOT_FW_HASH_OID, 43516beb58SJuan Castillo .opt = "tb-fw", 44159807e2SJuan Castillo .help_msg = "Trusted Boot Firmware image file", 4555e291a4SJuan Castillo .sn = "TrustedBootFirmwareHash", 46516beb58SJuan Castillo .ln = "Trusted Boot Firmware hash (SHA256)", 4755e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 4855e291a4SJuan Castillo .type = EXT_TYPE_HASH 4955e291a4SJuan Castillo }, 50516beb58SJuan Castillo [TRUSTED_WORLD_PK_EXT] = { 51516beb58SJuan Castillo .oid = TRUSTED_WORLD_PK_OID, 5255e291a4SJuan Castillo .sn = "TrustedWorldPublicKey", 5355e291a4SJuan Castillo .ln = "Trusted World Public Key", 5455e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 5555e291a4SJuan Castillo .type = EXT_TYPE_PKEY, 5696103d5aSJuan Castillo .attr.key = TRUSTED_WORLD_KEY 5755e291a4SJuan Castillo }, 58516beb58SJuan Castillo [NON_TRUSTED_WORLD_PK_EXT] = { 59516beb58SJuan Castillo .oid = NON_TRUSTED_WORLD_PK_OID, 6055e291a4SJuan Castillo .sn = "NonTrustedWorldPublicKey", 6155e291a4SJuan Castillo .ln = "Non-Trusted World Public Key", 6255e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 6355e291a4SJuan Castillo .type = EXT_TYPE_PKEY, 6496103d5aSJuan Castillo .attr.key = NON_TRUSTED_WORLD_KEY 6555e291a4SJuan Castillo }, 66516beb58SJuan Castillo [SCP_FW_CONTENT_CERT_PK_EXT] = { 67516beb58SJuan Castillo .oid = SCP_FW_CONTENT_CERT_PK_OID, 6855e291a4SJuan Castillo .sn = "SCPFirmwareContentCertPK", 6955e291a4SJuan Castillo .ln = "SCP Firmware content certificate public key", 7055e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 7155e291a4SJuan Castillo .type = EXT_TYPE_PKEY, 7296103d5aSJuan Castillo .attr.key = SCP_FW_CONTENT_CERT_KEY 7355e291a4SJuan Castillo }, 74516beb58SJuan Castillo [SCP_FW_HASH_EXT] = { 75516beb58SJuan Castillo .oid = SCP_FW_HASH_OID, 76516beb58SJuan Castillo .opt = "scp-fw", 77159807e2SJuan Castillo .help_msg = "SCP Firmware image file", 7855e291a4SJuan Castillo .sn = "SCPFirmwareHash", 79516beb58SJuan Castillo .ln = "SCP Firmware hash (SHA256)", 8055e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 8155e291a4SJuan Castillo .type = EXT_TYPE_HASH 8255e291a4SJuan Castillo }, 83516beb58SJuan Castillo [SOC_FW_CONTENT_CERT_PK_EXT] = { 84516beb58SJuan Castillo .oid = SOC_FW_CONTENT_CERT_PK_OID, 8555e291a4SJuan Castillo .sn = "SoCFirmwareContentCertPK", 8655e291a4SJuan Castillo .ln = "SoC Firmware content certificate public key", 8755e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 8855e291a4SJuan Castillo .type = EXT_TYPE_PKEY, 8996103d5aSJuan Castillo .attr.key = SOC_FW_CONTENT_CERT_KEY 9055e291a4SJuan Castillo }, 91516beb58SJuan Castillo [SOC_AP_FW_HASH_EXT] = { 92516beb58SJuan Castillo .oid = SOC_AP_FW_HASH_OID, 93516beb58SJuan Castillo .opt = "soc-fw", 94159807e2SJuan Castillo .help_msg = "SoC AP Firmware image file", 9555e291a4SJuan Castillo .sn = "SoCAPFirmwareHash", 96516beb58SJuan Castillo .ln = "SoC AP Firmware hash (SHA256)", 9755e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 9855e291a4SJuan Castillo .type = EXT_TYPE_HASH 9955e291a4SJuan Castillo }, 100516beb58SJuan Castillo [TRUSTED_OS_FW_CONTENT_CERT_PK_EXT] = { 101516beb58SJuan Castillo .oid = TRUSTED_OS_FW_CONTENT_CERT_PK_OID, 10255e291a4SJuan Castillo .sn = "TrustedOSFirmwareContentCertPK", 10355e291a4SJuan Castillo .ln = "Trusted OS Firmware content certificate public key", 10455e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 10555e291a4SJuan Castillo .type = EXT_TYPE_PKEY, 10696103d5aSJuan Castillo .attr.key = TRUSTED_OS_FW_CONTENT_CERT_KEY 10755e291a4SJuan Castillo }, 108516beb58SJuan Castillo [TRUSTED_OS_FW_HASH_EXT] = { 109516beb58SJuan Castillo .oid = TRUSTED_OS_FW_HASH_OID, 110516beb58SJuan Castillo .opt = "tos-fw", 111159807e2SJuan Castillo .help_msg = "Trusted OS image file", 11255e291a4SJuan Castillo .sn = "TrustedOSHash", 113516beb58SJuan Castillo .ln = "Trusted OS hash (SHA256)", 11455e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 11555e291a4SJuan Castillo .type = EXT_TYPE_HASH 11655e291a4SJuan Castillo }, 117516beb58SJuan Castillo [NON_TRUSTED_FW_CONTENT_CERT_PK_EXT] = { 118516beb58SJuan Castillo .oid = NON_TRUSTED_FW_CONTENT_CERT_PK_OID, 11955e291a4SJuan Castillo .sn = "NonTrustedFirmwareContentCertPK", 12055e291a4SJuan Castillo .ln = "Non-Trusted Firmware content certificate public key", 12155e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 12255e291a4SJuan Castillo .type = EXT_TYPE_PKEY, 12396103d5aSJuan Castillo .attr.key = NON_TRUSTED_FW_CONTENT_CERT_KEY 12455e291a4SJuan Castillo }, 125516beb58SJuan Castillo [NON_TRUSTED_WORLD_BOOTLOADER_HASH_EXT] = { 126516beb58SJuan Castillo .oid = NON_TRUSTED_WORLD_BOOTLOADER_HASH_OID, 127516beb58SJuan Castillo .opt = "nt-fw", 128159807e2SJuan Castillo .help_msg = "Non-Trusted World Bootloader image file", 12955e291a4SJuan Castillo .sn = "NonTrustedWorldBootloaderHash", 130516beb58SJuan Castillo .ln = "Non-Trusted World hash (SHA256)", 13155e291a4SJuan Castillo .asn1_type = V_ASN1_OCTET_STRING, 13255e291a4SJuan Castillo .type = EXT_TYPE_HASH 133cebe1f23SYatharth Kochar }, 134516beb58SJuan Castillo [SCP_FWU_CFG_HASH_EXT] = { 135516beb58SJuan Castillo .oid = SCP_FWU_CFG_HASH_OID, 136516beb58SJuan Castillo .opt = "scp-fwu-cfg", 137159807e2SJuan Castillo .help_msg = "SCP Firmware Update Config image file", 138cebe1f23SYatharth Kochar .sn = "SCPFWUpdateConfig", 139516beb58SJuan Castillo .ln = "SCP Firmware Update Config hash (SHA256)", 140cebe1f23SYatharth Kochar .asn1_type = V_ASN1_OCTET_STRING, 141cebe1f23SYatharth Kochar .type = EXT_TYPE_HASH, 142cebe1f23SYatharth Kochar .optional = 1 143cebe1f23SYatharth Kochar }, 144516beb58SJuan Castillo [AP_FWU_CFG_HASH_EXT] = { 145516beb58SJuan Castillo .oid = AP_FWU_CFG_HASH_OID, 146516beb58SJuan Castillo .opt = "ap-fwu-cfg", 147159807e2SJuan Castillo .help_msg = "AP Firmware Update Config image file", 148cebe1f23SYatharth Kochar .sn = "APFWUpdateConfig", 149516beb58SJuan Castillo .ln = "AP Firmware Update Config hash (SHA256)", 150cebe1f23SYatharth Kochar .asn1_type = V_ASN1_OCTET_STRING, 151cebe1f23SYatharth Kochar .type = EXT_TYPE_HASH, 152cebe1f23SYatharth Kochar .optional = 1 153cebe1f23SYatharth Kochar }, 154516beb58SJuan Castillo [FWU_HASH_EXT] = { 155516beb58SJuan Castillo .oid = FWU_HASH_OID, 156516beb58SJuan Castillo .opt = "fwu", 157159807e2SJuan Castillo .help_msg = "Firmware Updater image file", 158cebe1f23SYatharth Kochar .sn = "FWUpdaterHash", 159516beb58SJuan Castillo .ln = "Firmware Updater hash (SHA256)", 160cebe1f23SYatharth Kochar .asn1_type = V_ASN1_OCTET_STRING, 161cebe1f23SYatharth Kochar .type = EXT_TYPE_HASH, 162cebe1f23SYatharth Kochar .optional = 1 16355e291a4SJuan Castillo } 16455e291a4SJuan Castillo }; 16555e291a4SJuan Castillo 16655e291a4SJuan Castillo REGISTER_EXTENSIONS(tbb_ext); 167