1d89bec83SSandrine Bailleux# 236e3d877SAbhi.Singh# Copyright (c) 2020-2025, Arm Limited. All rights reserved. 3d89bec83SSandrine Bailleux# 4d89bec83SSandrine Bailleux# SPDX-License-Identifier: BSD-3-Clause 5d89bec83SSandrine Bailleux# 6d89bec83SSandrine Bailleux 7b67e9846SHarrison MutaiLIBEVLOG_PATH ?= contrib/libeventlog 8b67e9846SHarrison MutaiLIBEVLOG_NAME := eventlog 9cb03020eSHarrison Mutai 10b67e9846SHarrison MutaiLIBEVLOG_BUILD_DIR := $(BUILD_PLAT)/lib$(LIBEVLOG_NAME) 11b67e9846SHarrison MutaiLIBEVLOG_TARGET := $(LIB_DIR)/$(LIBEVLOG_NAME).a 12b67e9846SHarrison Mutai 13b67e9846SHarrison Mutaiifeq ($(DEBUG),1) 14b67e9846SHarrison MutaiLIBEVLOG_BUILD_TYPE := Debug 15b67e9846SHarrison Mutaielse 16b67e9846SHarrison MutaiLIBEVLOG_BUILD_TYPE := Release 17b67e9846SHarrison Mutaiendif 18b67e9846SHarrison Mutai 19b67e9846SHarrison MutaiLDLIBS := -l$(LIBEVLOG_NAME) $(LDLIBS) 20b67e9846SHarrison MutaiINCLUDES += -I$(LIBEVLOG_PATH)/include 21b67e9846SHarrison Mutai 22b67e9846SHarrison MutaiLIBEVLOG_DIRS_TO_CHECK += $(LIBEVLOG_PATH)/include 23d89bec83SSandrine Bailleux 2436e3d877SAbhi.Singh# When using a TPM, adopt the TPM's hash algorithm for 2536e3d877SAbhi.Singh# measurements through the Event Log mechanism, ensuring 2636e3d877SAbhi.Singh# the TPM uses the same algorithm for measurements and 2736e3d877SAbhi.Singh# extends the PCR accordingly, allowing for comparison 2836e3d877SAbhi.Singh# between PCR value and Event Log measurements required 2936e3d877SAbhi.Singh# for attestation. 3036e3d877SAbhi.Singhifdef MBOOT_TPM_HASH_ALG 3136e3d877SAbhi.Singh MBOOT_EL_HASH_ALG := ${MBOOT_TPM_HASH_ALG} 3278da42a5Slaurenw-armelse 3378da42a5Slaurenw-arm MBOOT_EL_HASH_ALG := sha256 3478da42a5Slaurenw-armendif 35d89bec83SSandrine Bailleux 3636e3d877SAbhi.Singh# Measured Boot hash algorithm. 3736e3d877SAbhi.Singh# SHA-256 (or stronger) is required for all devices that are TPM 2.0 compliant. 3878da42a5Slaurenw-armifeq (${MBOOT_EL_HASH_ALG}, sha512) 39d89bec83SSandrine Bailleux TPM_ALG_ID := TPM_ALG_SHA512 40d89bec83SSandrine Bailleux TCG_DIGEST_SIZE := 64U 41b67e9846SHarrison Mutai CRYPTO_MD_ID := CRYPTO_MD_SHA512 4278da42a5Slaurenw-armelse ifeq (${MBOOT_EL_HASH_ALG}, sha384) 43d89bec83SSandrine Bailleux TPM_ALG_ID := TPM_ALG_SHA384 44d89bec83SSandrine Bailleux TCG_DIGEST_SIZE := 48U 45b67e9846SHarrison Mutai CRYPTO_MD_ID := CRYPTO_MD_SHA384 46d89bec83SSandrine Bailleuxelse 47d89bec83SSandrine Bailleux TPM_ALG_ID := TPM_ALG_SHA256 48d89bec83SSandrine Bailleux TCG_DIGEST_SIZE := 32U 49b67e9846SHarrison Mutai CRYPTO_MD_ID := CRYPTO_MD_SHA256 5078da42a5Slaurenw-armendif #MBOOT_EL_HASH_ALG 51d89bec83SSandrine Bailleux 5214db963fSManish V Badarkhe# Set definitions for Measured Boot driver. 53d89bec83SSandrine Bailleux$(eval $(call add_defines,\ 54d89bec83SSandrine Bailleux $(sort \ 55d89bec83SSandrine Bailleux TPM_ALG_ID \ 56d89bec83SSandrine Bailleux TCG_DIGEST_SIZE \ 57d89bec83SSandrine Bailleux EVENT_LOG_LEVEL \ 58b67e9846SHarrison Mutai CRYPTO_MD_ID \ 59d89bec83SSandrine Bailleux))) 60d89bec83SSandrine Bailleux 61b67e9846SHarrison MutaiLIBEVLOG_CFLAGS ?= $(filter-out -I%,$(TF_CFLAGS)) 62b67e9846SHarrison MutaiLIBEVLOG_CFLAGS += $(patsubst %,-I%,$(call include-dirs,$(TF_CFLAGS))) 63d89bec83SSandrine Bailleux 64b67e9846SHarrison Mutai$(LIBEVLOG_TARGET): $(LIB_DIR)/libc.a 65b67e9846SHarrison Mutai $(s)echo " CM $@" 66b67e9846SHarrison Mutai $(q)cmake -S $(LIBEVLOG_PATH) -B $(LIBEVLOG_BUILD_DIR) \ 67b67e9846SHarrison Mutai -DHASH_ALGORITHM=$(call uppercase,$(MBOOT_EL_HASH_ALG)) \ 68b67e9846SHarrison Mutai -DCMAKE_BUILD_TYPE=$(LIBEVLOG_BUILD_TYPE) \ 69b67e9846SHarrison Mutai -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(abspath $(BUILD_PLAT)/lib)" \ 70b67e9846SHarrison Mutai -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ 71*fcada3d5SChris Kay -DCMAKE_C_COMPILER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-program),;)) \ 72b67e9846SHarrison Mutai -DCMAKE_C_FLAGS=$(call escape-shell,$(LIBEVLOG_CFLAGS)) \ 73b67e9846SHarrison Mutai -DDEBUG_BACKEND_HEADER="log_backend_tf.h" \ 74b67e9846SHarrison Mutai $(if $(V),, --log-level=ERROR) > /dev/null 75b67e9846SHarrison Mutai $(q)cmake --build $(LIBEVLOG_BUILD_DIR) -- $(if $(V),,-s) > /dev/null 76ca391636SHarrison Mutai 77b67e9846SHarrison Mutailibraries: $(LIBEVLOG_TARGET) 78