blob: 567fe2a0f08bd7e12b1cf022f66032899b1eed3d [file] [log] [blame]
Juan Castillo95cfd4a2015-04-14 12:49:03 +01001#
Ryan Everettd51981e2024-11-11 18:02:10 +00002# Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
Juan Castillo95cfd4a2015-04-14 12:49:03 +01003#
dp-arm82cb2c12017-05-03 09:38:09 +01004# SPDX-License-Identifier: BSD-3-Clause
Juan Castillo95cfd4a2015-04-14 12:49:03 +01005#
6
Antonio Nino Diazaa7877c2018-10-10 11:14:44 +01007PLAT_BL_COMMON_SOURCES += drivers/arm/pl011/${ARCH}/pl011_console.S \
Yatharth Kochar1a0a3f02016-06-28 16:58:26 +01008 plat/arm/board/common/${ARCH}/board_arm_helpers.S
Juan Castillo95cfd4a2015-04-14 12:49:03 +01009
Antonio Nino Diazaa7877c2018-10-10 11:14:44 +010010BL1_SOURCES += drivers/cfi/v2m/v2m_flash.c
Juan Castillo95cfd4a2015-04-14 12:49:03 +010011
Antonio Nino Diazaa7877c2018-10-10 11:14:44 +010012BL2_SOURCES += drivers/cfi/v2m/v2m_flash.c
Juan Castillo95cfd4a2015-04-14 12:49:03 +010013
14ifneq (${TRUSTED_BOARD_BOOT},0)
laurenw-arm95302e42022-12-13 09:42:40 -060015ARM_ROTPK_S = plat/arm/board/common/rotpk/arm_dev_rotpk.S
Ryan Everettd51981e2024-11-11 18:02:10 +000016ARM_ROTPK = $(BUILD_PLAT)/arm_rotpk.bin
17ARM_ROTPK_IS_HASH := 1
18$(eval $(call add_define_val,ARM_ROTPK,'"$(ARM_ROTPK)"'))
Sandrine Bailleuxb65dfe42023-10-26 15:14:42 +020019
Max Shvetsova6ffdde2019-12-06 11:50:12 +000020# ROTPK hash location
21ifeq (${ARM_ROTPK_LOCATION}, regs)
22 ARM_ROTPK_LOCATION_ID = ARM_ROTPK_REGS_ID
Ryan Everettd51981e2024-11-11 18:02:10 +000023else
24# The ROTPK is a development key
25ifeq (${ARM_ROTPK_LOCATION}, devel_rsa)
Max Shvetsov698e2312020-02-11 12:41:08 +000026 CRYPTO_ALG=rsa
Max Shvetsova6ffdde2019-12-06 11:50:12 +000027 ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_RSA_ID
Ryan Everettd51981e2024-11-11 18:02:10 +000028 ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem
Max Shvetsova6ffdde2019-12-06 11:50:12 +000029$(warning Development keys support for FVP is deprecated. Use `regs` \
30option instead)
31else ifeq (${ARM_ROTPK_LOCATION}, devel_ecdsa)
Max Shvetsov698e2312020-02-11 12:41:08 +000032 CRYPTO_ALG=ec
Max Shvetsova6ffdde2019-12-06 11:50:12 +000033 ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_ECDSA_ID
Ryan Everettd51981e2024-11-11 18:02:10 +000034 ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_ecdsa.pem
Max Shvetsova6ffdde2019-12-06 11:50:12 +000035$(warning Development keys support for FVP is deprecated. Use `regs` \
36option instead)
laurenw-arm5f899282022-10-28 11:26:32 -050037else ifeq (${ARM_ROTPK_LOCATION}, devel_full_dev_rsa_key)
38 CRYPTO_ALG=rsa
39 ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_FULL_DEV_RSA_KEY_ID
Ryan Everettd51981e2024-11-11 18:02:10 +000040 ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem
41 ARM_ROTPK_IS_HASH = 0
laurenw-arm5f899282022-10-28 11:26:32 -050042$(warning Development keys support for FVP is deprecated. Use `regs` \
43option instead)
laurenw-armb8ae6892023-08-15 14:57:56 -050044else ifeq (${ARM_ROTPK_LOCATION}, devel_full_dev_ecdsa_key)
45 CRYPTO_ALG=ec
46 ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_FULL_DEV_ECDSA_KEY_ID
Ryan Everettd51981e2024-11-11 18:02:10 +000047 ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_ecdsa.pem
48 ARM_ROTPK_IS_HASH = 0
laurenw-armb8ae6892023-08-15 14:57:56 -050049$(warning Development keys support for FVP is deprecated. Use `regs` \
50option instead)
Max Shvetsova6ffdde2019-12-06 11:50:12 +000051else
Sandrine Bailleux5eea0192021-04-16 16:08:46 +020052$(error "Unsupported ARM_ROTPK_LOCATION value")
Max Shvetsova6ffdde2019-12-06 11:50:12 +000053endif
Ryan Everettd51981e2024-11-11 18:02:10 +000054$(BUILD_PLAT)/bl1/arm_dev_rotpk.o : $(ARM_ROTPK)
55$(BUILD_PLAT)/bl2/arm_dev_rotpk.o : $(ARM_ROTPK)
56endif
Juan Castillo95cfd4a2015-04-14 12:49:03 +010057
Max Shvetsova6ffdde2019-12-06 11:50:12 +000058$(eval $(call add_define,ARM_ROTPK_LOCATION_ID))
Ryan Everettd51981e2024-11-11 18:02:10 +000059$(eval $(call add_define,ARM_ROTPK_IS_HASH))
Max Shvetsova6ffdde2019-12-06 11:50:12 +000060
laurenw-armf2423792022-04-21 16:50:49 -050061ifeq (${ENABLE_RME}, 1)
62COT := cca
63endif
64
Ryan Everettd51981e2024-11-11 18:02:10 +000065# Force generation of the ROT public key if ROT_KEY is specified
Max Shvetsova6ffdde2019-12-06 11:50:12 +000066ifdef ROT_KEY
Ryan Everettd51981e2024-11-11 18:02:10 +000067 PK_PREREQUISITES = $(ROT_KEY) FORCE
Max Shvetsova6ffdde2019-12-06 11:50:12 +000068endif
69
Ryan Everettd51981e2024-11-11 18:02:10 +000070$(ARM_ROTPK) : $(PK_PREREQUISITES)
Max Shvetsova6ffdde2019-12-06 11:50:12 +000071ifndef ROT_KEY
Ryan Everettd51981e2024-11-11 18:02:10 +000072 $(error Cannot generate public key: no ROT_KEY defined)
Max Shvetsova6ffdde2019-12-06 11:50:12 +000073endif
Ryan Everettd51981e2024-11-11 18:02:10 +000074ifeq ($(ARM_ROTPK_IS_HASH), 1)
Salome Thirote95abc42022-07-14 16:14:15 +010075 ${OPENSSL_BIN_PATH}/openssl ${CRYPTO_ALG} -in $< -pubout -outform DER | \
Ryan Everettd51981e2024-11-11 18:02:10 +000076 ${OPENSSL_BIN_PATH}/openssl dgst -${HASH_ALG} -binary -out $@
77else
78 ${OPENSSL_BIN_PATH}/openssl ${CRYPTO_ALG} -in $< -pubout -outform DER -out $@
79endif
Max Shvetsova6ffdde2019-12-06 11:50:12 +000080
81# Certificate NV-Counters. Use values corresponding to tied off values in
82# ARM development platforms
83TFW_NVCTR_VAL ?= 31
84NTFW_NVCTR_VAL ?= 223
laurenw-arm02552d42023-05-02 14:42:48 -050085# The CCA Non-Volatile Counter only exists on some Arm development platforms.
86# On others, we mock it by aliasing it to the Trusted Firmware Non-Volatile counter,
87# hence we set both counters to the same default value.
88CCAFW_NVCTR_VAL ?= 31
Sandrine Bailleuxb65dfe42023-10-26 15:14:42 +020089
Max Shvetsova6ffdde2019-12-06 11:50:12 +000090BL1_SOURCES += plat/arm/board/common/board_arm_trusted_boot.c \
laurenw-arm5f899282022-10-28 11:26:32 -050091 ${ARM_ROTPK_S}
Max Shvetsova6ffdde2019-12-06 11:50:12 +000092BL2_SOURCES += plat/arm/board/common/board_arm_trusted_boot.c \
laurenw-arm5f899282022-10-28 11:26:32 -050093 ${ARM_ROTPK_S}
Max Shvetsova6ffdde2019-12-06 11:50:12 +000094
Sandrine Bailleux1035a702020-02-06 14:59:33 +010095# Allows platform code to provide implementation variants depending on the
96# selected chain of trust.
97$(eval $(call add_define,ARM_COT_${COT}))
98
99ifeq (${COT},dualroot)
100# Platform Root of Trust key files.
101ARM_PROT_KEY := plat/arm/board/common/protpk/arm_protprivk_rsa.pem
102ARM_PROTPK_HASH := plat/arm/board/common/protpk/arm_protpk_rsa_sha256.bin
103
104# Provide the private key to cert_create tool. It needs it to sign the images.
105PROT_KEY := ${ARM_PROT_KEY}
106
107$(eval $(call add_define_val,ARM_PROTPK_HASH,'"$(ARM_PROTPK_HASH)"'))
108
109BL1_SOURCES += plat/arm/board/common/protpk/arm_dev_protpk.S
110BL2_SOURCES += plat/arm/board/common/protpk/arm_dev_protpk.S
111
112$(BUILD_PLAT)/bl1/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
113$(BUILD_PLAT)/bl2/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
114endif
115
laurenw-armf2423792022-04-21 16:50:49 -0500116ifeq (${COT},cca)
117# Platform and Secure World Root of Trust key files.
118ARM_PROT_KEY := plat/arm/board/common/protpk/arm_protprivk_rsa.pem
119ARM_PROTPK_HASH := plat/arm/board/common/protpk/arm_protpk_rsa_sha256.bin
120ARM_SWD_ROT_KEY := plat/arm/board/common/swd_rotpk/arm_swd_rotprivk_rsa.pem
121ARM_SWD_ROTPK_HASH := plat/arm/board/common/swd_rotpk/arm_swd_rotpk_rsa_sha256.bin
122
123# Provide the private keys to cert_create tool. It needs them to sign the images.
124PROT_KEY := ${ARM_PROT_KEY}
125SWD_ROT_KEY := ${ARM_SWD_ROT_KEY}
126
127$(eval $(call add_define_val,ARM_PROTPK_HASH,'"$(ARM_PROTPK_HASH)"'))
128$(eval $(call add_define_val,ARM_SWD_ROTPK_HASH,'"$(ARM_SWD_ROTPK_HASH)"'))
129
130BL1_SOURCES += plat/arm/board/common/protpk/arm_dev_protpk.S \
131 plat/arm/board/common/swd_rotpk/arm_dev_swd_rotpk.S
132BL2_SOURCES += plat/arm/board/common/protpk/arm_dev_protpk.S \
133 plat/arm/board/common/swd_rotpk/arm_dev_swd_rotpk.S
134
135$(BUILD_PLAT)/bl1/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
136$(BUILD_PLAT)/bl1/arm_dev_swd_rotpk.o: $(ARM_SWD_ROTPK_HASH)
137$(BUILD_PLAT)/bl2/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
138$(BUILD_PLAT)/bl2/arm_dev_swd_rotpk.o: $(ARM_SWD_ROTPK_HASH)
139endif
140
Juan Castillo95cfd4a2015-04-14 12:49:03 +0100141endif