[PATCH] tpm: measure DTB in PCR1 instead of PCR0
Eddie James
eajames at linux.ibm.com
Fri Jun 14 23:31:44 CEST 2024
On 6/14/24 07:09, Ilias Apalodimas wrote:
> The PC client spec [0], doesn't describe measurements for DTBs. It does
> describe what do to for ACPI tables though.
>
> There is a description for ACPI in 3.3.4.1 PCR[0] – SRTM, POST BIOS,
> and Embedded Drivers and they explicitly mention ACPI in there. There's
> no mention of ACPI in 3.3.4.2 PCR[1] – Host Platform Configuration.
>
> However, in Figure 6 -- PCR Mapping of UEFI Components ACPI is shown
> in PCR1. The general description also mentions PCR0 is for code and PCR1
> is for data such as ACPI and SMBIOS.
Thanks, looks correct.
Reviewed-by: Eddie James <eajames at linux.ibm.com>
>
> So let's switch over the DTB measurements to PCR1 which seems a better
> fit.
>
> [0] https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification
>
> Reported-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> ---
> boot/bootm.c | 2 +-
> lib/efi_loader/efi_tcg2.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/boot/bootm.c b/boot/bootm.c
> index 6fa8edab021e..3de87eb185d7 100644
> --- a/boot/bootm.c
> +++ b/boot/bootm.c
> @@ -963,7 +963,7 @@ int bootm_measure(struct bootm_headers *images)
> goto unmap_initrd;
>
> if (IS_ENABLED(CONFIG_MEASURE_DEVICETREE)) {
> - ret = tcg2_measure_data(dev, &elog, 0, images->ft_len,
> + ret = tcg2_measure_data(dev, &elog, 1, images->ft_len,
> (u8 *)images->ft_addr,
> EV_TABLE_OF_DEVICES,
> strlen("dts") + 1,
> diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c
> index 51264c1b998c..a8a54c9f131d 100644
> --- a/lib/efi_loader/efi_tcg2.c
> +++ b/lib/efi_loader/efi_tcg2.c
> @@ -1328,7 +1328,7 @@ efi_status_t efi_tcg2_measure_dtb(void *dtb)
> sha256_update(&hash_ctx, (u8 *)dtb + fdt_off_mem_rsvmap(dtb), rsvmap_size);
> sha256_finish(&hash_ctx, blob->data + blob->blob_description_size);
>
> - ret = measure_event(dev, 0, EV_POST_CODE, event_size, (u8 *)blob);
> + ret = measure_event(dev, 1, EV_POST_CODE, event_size, (u8 *)blob);
>
> free(blob);
> return ret;
> --
> 2.45.1
>
More information about the U-Boot
mailing list