blob: 4921e3a5ad3f30cab3711b635a0115c7afecda92 [file] [log] [blame]
From 6f8ce3c0f70fecb1e7b990b8b47af16972b90671 Mon Sep 17 00:00:00 2001
From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
Date: Wed, 21 Dec 2022 15:13:27 +0000
Subject: [PATCH 4/10] Platform: corstone1000: calculate metadata crc32
Calculate metadata crc32 during provisioning.
It is requried to enable TF-A, U-Boot to verify fwu_metadata.
Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
Upstream-Status: Pending [Not submitted to upstream yet]
---
platform/ext/target/arm/corstone1000/CMakeLists.txt | 2 ++
platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt | 2 ++
.../target/arm/corstone1000/fw_update_agent/fwu_agent.c | 7 ++++++-
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
index 7808efae68..554fc51b21 100644
--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
@@ -58,6 +58,7 @@ target_include_directories(platform_s
INTERFACE
cc312
fw_update_agent
+ soft_crc
)
target_sources(platform_s
@@ -185,6 +186,7 @@ target_include_directories(platform_bl2
fip_parser
Native_Driver
fw_update_agent
+ soft_crc
io
.
INTERFACE
diff --git a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
index 62fd0f6ddf..426a8df698 100644
--- a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
+++ b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
@@ -229,6 +229,7 @@ target_include_directories(bl1_main
$<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_SOURCE_DIR}/platform/ext/accelerator/cc312>
$<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_SOURCE_DIR}/lib/ext/cryptocell-312-runtime/shared/include/mbedtls>
$<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_SOURCE_DIR}/lib/ext/cryptocell-312-runtime/shared/include/crypto_api/cc3x>
+ ../soft_crc
)
# Configurations based on platform level cmake files
@@ -241,6 +242,7 @@ target_sources(bl1_main
../Native_Driver/firewall.c
../Native_Driver/uart_pl011_drv.c
../fw_update_agent/fwu_agent.c
+ ../soft_crc/soft_crc.c
../Native_Driver/arm_watchdog_drv.c
../Native_Driver/watchdog.c
bl1_boot_hal.c
diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
index d5491e08db..1a42c72bd5 100644
--- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -20,6 +20,7 @@
#include "tfm_plat_defs.h"
#include "uefi_fmp.h"
#include "uart_stdout.h"
+#include "soft_crc.h"
/* Properties of image in a bank */
struct fwu_image_properties {
@@ -324,6 +325,10 @@ enum fwu_agent_error_t fwu_metadata_provision(void)
_metadata.img_entry[i].img_props[BANK_1].version = INVALID_VERSION;
}
+ /* Calculate CRC32 for fwu metadata */
+ _metadata.crc_32 = crc32((uint8_t *)&_metadata.version,
+ sizeof(struct fwu_metadata) - sizeof(uint32_t));
+
ret = metadata_write(&_metadata);
if (ret) {
return ret;
--
2.25.1