Hi Jérémie,

On 2026-08-14T17:07:09, Jérémie Dautheribes
<[email protected]> wrote:
> tools: binman: add nxp_imx93cst etype for i.MX93 flash.bin signing
>
> Add a new binman etype which allows signing both the SPL and U-Boot proper
> sections of i.MX93 flash.bin using CST.
> The implementation is largely derived from the nxp_imx8mcst etype, as the
> signing procedures for both platforms are quite similar.
>
> Signed-off-by: Jérémie Dautheribes (Schneider Electric) 
> <[email protected]>
>
> .gitignore                         |   2 +
>  tools/binman/etype/nxp_imx93cst.py | 143 
> +++++++++++++++++++++++++++++++++++++
>  2 files changed, 145 insertions(+)

> +class Entry_nxp_imx93cst(Entry_mkimage):
> +    """NXP i.MX93 CST .cfg file generator and cst invoker"""
> +
> +    def __init__(self, section, etype, node):
> +        super().__init__(section, etype, node)

Please expand the class docstring to document the supported properties
(nxp,srk-table and nxp,srk-crt) and the SRK_TABLE / SRK_KEY
environment overrides, in the same style as Entry_nxp_imx8mcst.
Without that, users have no way to discover what to put in the DT
node. Also, __init__() does nothing beyond calling super().__init__(),
so drop it.

> diff --git a/tools/binman/etype/nxp_imx93cst.py 
> b/tools/binman/etype/nxp_imx93cst.py
> @@ -0,0 +1,143 @@
> +        if struct.unpack("<B", data[3:4])[0] != CONTAINER_HDR_TAG:
> +            # Unknown section type, pass input data through.
> +            return data

struct.unpack() for a single byte is overkill - 'if data[3] !=
CONTAINER_HDR_TAG:' is clearer and does the same thing. Also, there is
no length check on data before this slice or the flags_offset read
below; a short input silently produces an empty slice and the unpack
raises. A quick 'if len(data) < flags_offset + 4' guard (returning
data unchanged) would fail more gracefully.

> diff --git a/tools/binman/etype/nxp_imx93cst.py 
> b/tools/binman/etype/nxp_imx93cst.py
> @@ -0,0 +1,143 @@
> +KEY_NAME = "sha384_secp384r1_v3_usr_crt"
> +
> +CSF_CONFIG_TEMPLATE = f"""
> +[Header]
> +  Target = AHAB
> +  Version = 1.0
> +
> +[Install SRK]
> +  File = "SRK_1_2_3_4_table.bin"
> +  Source = "SRK1_{KEY_NAME}.pem"
> +  Source index = 0
> +  Source set = OEM
> +  Revocations = 0x0
> +
> +[Authenticate Data]
> +  File = "data.bin"
> +  Offsets    = 0x400        0x490
> +

The Offsets line embeds a literal tab and hard-coded values that are
always overwritten before the config is written. Please use plain
placeholders (e.g. '0x0 0x0') with a single space, so the template
does not mislead the reader into thinking those numbers matter. Please
follow the prevailing single-quote convention in binman.

> diff --git a/tools/binman/etype/nxp_imx93cst.py 
> b/tools/binman/etype/nxp_imx93cst.py
> @@ -0,0 +1,143 @@
> +    def BuildSectionData(self, required):
> +        data, input_fname, uniq = self.collect_contents_to_file(
> +            self._entries.values(), "input"
> +        )

input_fname is unused; assign it to _ to make that explicit.

Regards,
Simon

Reply via email to