On 06/07/2018 16:10, Holger Dengler wrote:
> Signing parts of a u-boot imximage for image verification in High
> Assurance Boot (HAB) in a post-build process, requires some
> information from the imximage header. Currently, this information is
> only provided during the image build, which makes the transfer of this
> information to the post-build process harder than necessary.
> 
> The i.MX HAB information (start and length) can be calculated either
> by using information from the image-configuration file, or from the
> information in the flash header of the imximage.
> The advantage of using information from flash header is, that they are
> not only available during image creation, but also available if
> existing images are processed.
> 
> Example:
> $ tools/mkimage -l u-boot.imx
> Image Type:   Freescale IMX Boot Image
> Image Ver:    2 (i.MX53/6/7 compatible)
> Mode:         DCD
> Data Size:    483328 Bytes = 472.00 KiB = 0.46 MiB
> Load Address: 877ff420
> Entry Point:  87800000
> HAB Blocks:   0x877ff400 0x00000000 0x00071c00
> DCD Blocks:   0x00910000 0x0000002c 0x00000208
> 
> Signed-off-by: Holger Dengler <[email protected]>
> ---
> 
>  tools/imximage.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/imximage.c b/tools/imximage.c
> index 5f63bf8759..d7c0b6e883 100644
> --- a/tools/imximage.c
> +++ b/tools/imximage.c
> @@ -506,8 +506,7 @@ static void print_hdr_v2(struct imx_header *imx_hdr)
>               genimg_print_size(hdr_v2->boot_data.size);
>               printf("Load Address: %08x\n", 
> (uint32_t)fhdr_v2->boot_data_ptr);
>               printf("Entry Point:  %08x\n", (uint32_t)fhdr_v2->entry);
> -             if (fhdr_v2->csf && (imximage_ivt_offset != UNDEFINED) &&
> -                 (imximage_csf_size != UNDEFINED)) {
> +             if (fhdr_v2->csf) {
>                       uint16_t dcdlen;
>                       int offs;
>  
> @@ -515,10 +514,16 @@ static void print_hdr_v2(struct imx_header *imx_hdr)
>                       offs = (char *)&hdr_v2->data.dcd_table
>                               - (char *)hdr_v2;
>  
> +                     /*
> +                      * The HAB block is the first part of the image, from
> +                      * start of IVT header (fhdr_v2->self) to the start of
> +                      * the CSF block (fhdr_v2->csf). So HAB size is
> +                      * calculated as:
> +                      * HAB_size = fhdr_v2->csf - fhdr_v2->self
> +                      */
>                       printf("HAB Blocks:   0x%08x 0x%08x 0x%08x\n",
>                              (uint32_t)fhdr_v2->self, 0,
> -                            hdr_v2->boot_data.size - imximage_ivt_offset -
> -                            imximage_csf_size);
> +                            (uint32_t)(fhdr_v2->csf - fhdr_v2->self));
>                       printf("DCD Blocks:   0x00910000 0x%08x 0x%08x\n",
>                              offs, be16_to_cpu(dcdlen));
>               }
> 

Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: [email protected]
=====================================================================
_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to