mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00
Merge changes from topic "mb/mb-rss-refactor" into integration
* changes: refactor(tc): update RSS driver inteface calls refactor(fvp): update RSS driver inteface calls refactor(rss): make RSS driver standalone for Measured Boot
This commit is contained in:
commit
da36a23270
8 changed files with 31 additions and 47 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -32,23 +32,10 @@
|
|||
# error Invalid Measured Boot algorithm.
|
||||
#endif /* MBOOT_ALG_ID */
|
||||
|
||||
/* Pointer to struct rss_mboot_metadata */
|
||||
static struct rss_mboot_metadata *plat_metadata_ptr;
|
||||
|
||||
/* Functions' declarations */
|
||||
void rss_measured_boot_init(void)
|
||||
void rss_measured_boot_init(struct rss_mboot_metadata *metadata_ptr)
|
||||
{
|
||||
/* At this point it is expected that communication channel over MHU
|
||||
* is already initialised by platform init.
|
||||
*/
|
||||
struct rss_mboot_metadata *metadata_ptr;
|
||||
|
||||
/* Get pointer to platform's struct rss_mboot_metadata structure */
|
||||
plat_metadata_ptr = plat_rss_mboot_get_metadata();
|
||||
assert(plat_metadata_ptr != NULL);
|
||||
|
||||
/* Use a local variable to preserve the value of the global pointer */
|
||||
metadata_ptr = plat_metadata_ptr;
|
||||
assert(metadata_ptr != NULL);
|
||||
|
||||
/* Init the non-const members of the metadata structure */
|
||||
while (metadata_ptr->id != RSS_MBOOT_INVALID_ID) {
|
||||
|
@ -58,13 +45,15 @@ void rss_measured_boot_init(void)
|
|||
}
|
||||
}
|
||||
|
||||
int rss_mboot_measure_and_record(uintptr_t data_base, uint32_t data_size,
|
||||
int rss_mboot_measure_and_record(struct rss_mboot_metadata *metadata_ptr,
|
||||
uintptr_t data_base, uint32_t data_size,
|
||||
uint32_t data_id)
|
||||
{
|
||||
unsigned char hash_data[CRYPTO_MD_MAX_SIZE];
|
||||
int rc;
|
||||
psa_status_t ret;
|
||||
const struct rss_mboot_metadata *metadata_ptr = plat_metadata_ptr;
|
||||
|
||||
assert(metadata_ptr != NULL);
|
||||
|
||||
/* Get the metadata associated with this image. */
|
||||
while ((metadata_ptr->id != RSS_MBOOT_INVALID_ID) &&
|
||||
|
@ -103,14 +92,16 @@ int rss_mboot_measure_and_record(uintptr_t data_base, uint32_t data_size,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int rss_mboot_set_signer_id(unsigned int img_id,
|
||||
int rss_mboot_set_signer_id(struct rss_mboot_metadata *metadata_ptr,
|
||||
unsigned int img_id,
|
||||
const void *pk_ptr,
|
||||
size_t pk_len)
|
||||
{
|
||||
unsigned char hash_data[CRYPTO_MD_MAX_SIZE];
|
||||
struct rss_mboot_metadata *metadata_ptr = plat_metadata_ptr;
|
||||
int rc;
|
||||
|
||||
assert(metadata_ptr != NULL);
|
||||
|
||||
/* Get the metadata associated with this image. */
|
||||
while ((metadata_ptr->id != RSS_MBOOT_INVALID_ID) &&
|
||||
(metadata_ptr->id != img_id)) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -44,12 +44,14 @@ struct rss_mboot_metadata {
|
|||
};
|
||||
|
||||
/* Functions' declarations */
|
||||
void rss_measured_boot_init(void);
|
||||
struct rss_mboot_metadata *plat_rss_mboot_get_metadata(void);
|
||||
int rss_mboot_measure_and_record(uintptr_t data_base, uint32_t data_size,
|
||||
void rss_measured_boot_init(struct rss_mboot_metadata *metadata_ptr);
|
||||
int rss_mboot_measure_and_record(struct rss_mboot_metadata *metadata_ptr,
|
||||
uintptr_t data_base, uint32_t data_size,
|
||||
uint32_t data_id);
|
||||
|
||||
/* TODO: These metadata are currently not available during TF-A boot */
|
||||
int rss_mboot_set_signer_id(unsigned int img_id, const void *pk_ptr, size_t pk_len);
|
||||
int rss_mboot_set_signer_id(struct rss_mboot_metadata *metadata_ptr,
|
||||
unsigned int img_id, const void *pk_ptr,
|
||||
size_t pk_len);
|
||||
|
||||
#endif /* RSS_MEASURED_BOOT_H */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2021-2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -54,7 +54,7 @@ void bl1_plat_mboot_init(void)
|
|||
event_log_init(event_log, event_log + sizeof(event_log));
|
||||
event_log_write_header();
|
||||
|
||||
rss_measured_boot_init();
|
||||
rss_measured_boot_init(fvp_rss_mboot_metadata);
|
||||
}
|
||||
|
||||
void bl1_plat_mboot_finish(void)
|
||||
|
|
|
@ -117,7 +117,7 @@ void bl2_plat_mboot_init(void)
|
|||
|
||||
event_log_init((uint8_t *)event_log_start, event_log_finish);
|
||||
|
||||
rss_measured_boot_init();
|
||||
rss_measured_boot_init(fvp_rss_mboot_metadata);
|
||||
}
|
||||
|
||||
int plat_mboot_measure_critical_data(unsigned int critical_data_id,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2021-2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -16,11 +16,6 @@
|
|||
extern event_log_metadata_t fvp_event_log_metadata[];
|
||||
extern struct rss_mboot_metadata fvp_rss_mboot_metadata[];
|
||||
|
||||
struct rss_mboot_metadata *plat_rss_mboot_get_metadata(void)
|
||||
{
|
||||
return fvp_rss_mboot_metadata;
|
||||
}
|
||||
|
||||
int plat_mboot_measure_image(unsigned int image_id, image_info_t *image_data)
|
||||
{
|
||||
int err;
|
||||
|
@ -38,7 +33,8 @@ int plat_mboot_measure_image(unsigned int image_id, image_info_t *image_data)
|
|||
}
|
||||
|
||||
/* Calculate image hash and record data in RSS */
|
||||
err = rss_mboot_measure_and_record(image_data->image_base,
|
||||
err = rss_mboot_measure_and_record(fvp_rss_mboot_metadata,
|
||||
image_data->image_base,
|
||||
image_data->image_size,
|
||||
image_id);
|
||||
if (err != 0) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -46,7 +46,7 @@ void bl1_plat_mboot_init(void)
|
|||
(void)rss_comms_init(PLAT_RSS_AP_SND_MHU_BASE,
|
||||
PLAT_RSS_AP_RCV_MHU_BASE);
|
||||
|
||||
rss_measured_boot_init();
|
||||
rss_measured_boot_init(tc_rss_mboot_metadata);
|
||||
}
|
||||
|
||||
void bl1_plat_mboot_finish(void)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -45,7 +45,7 @@ void bl2_plat_mboot_init(void)
|
|||
(void)rss_comms_init(PLAT_RSS_AP_SND_MHU_BASE,
|
||||
PLAT_RSS_AP_RCV_MHU_BASE);
|
||||
|
||||
rss_measured_boot_init();
|
||||
rss_measured_boot_init(tc_rss_mboot_metadata);
|
||||
}
|
||||
|
||||
void bl2_plat_mboot_finish(void)
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -13,17 +12,13 @@
|
|||
|
||||
extern struct rss_mboot_metadata tc_rss_mboot_metadata[];
|
||||
|
||||
struct rss_mboot_metadata *plat_rss_mboot_get_metadata(void)
|
||||
{
|
||||
return tc_rss_mboot_metadata;
|
||||
}
|
||||
|
||||
int plat_mboot_measure_image(unsigned int image_id, image_info_t *image_data)
|
||||
{
|
||||
int err;
|
||||
|
||||
/* Calculate image hash and record data in RSS */
|
||||
err = rss_mboot_measure_and_record(image_data->image_base,
|
||||
err = rss_mboot_measure_and_record(tc_rss_mboot_metadata,
|
||||
image_data->image_base,
|
||||
image_data->image_size,
|
||||
image_id);
|
||||
if (err != 0) {
|
||||
|
|
Loading…
Add table
Reference in a new issue