[PATCH v1 2/2] doc_ cmd: add documentation for sm3sum
Quentin Schulz
quentin.schulz at cherry.de
Wed Jan 14 15:22:46 CET 2026
Hi Heiko,
Typo in title, should be doc: and not doc_.
On 1/6/26 3:14 PM, Heiko Schocher wrote:
> add documentation for sm3sum command.
>
> Signed-off-by: Heiko Schocher <hs at nabladev.com>
> ---
>
> doc/usage/cmd/sm3sum.rst | 117 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 117 insertions(+)
> create mode 100644 doc/usage/cmd/sm3sum.rst
>
> diff --git a/doc/usage/cmd/sm3sum.rst b/doc/usage/cmd/sm3sum.rst
> new file mode 100644
> index 00000000000..3b157779a0e
> --- /dev/null
> +++ b/doc/usage/cmd/sm3sum.rst
> @@ -0,0 +1,117 @@
> +.. SPDX-License-Identifier: GPL-2.0+:
Use the canonical version:
GPL-2.0-or-later
c.f. https://spdx.org/licenses/GPL-2.0-or-later.html
(Do not end it with a colon either).
> + Copyright 2025 Nabladev
Seems like we typically use a new comment for this line
.. Copyright 2025 Nabladev
I **think** the copyright should use the name of the legal entity (so
likely "Nabla Software Engineering GmbH"). But IANAL and I personally
don't care :)
> + Written by Heiko Schocher <hs at nabladev.com>
> +
> +.. index::
> + single: sm3sum (command)
> +
> +sm3sum command
> +==============
> +
> +Synopsis
> +--------
> +
> +::
> +
> + sm3sum - compute SM3 message digest
> +
> + Usage:
> + sm3sum address count [[*]sum]
> + - compute SM3 message digest [save to sum]
> + sm3sum -v address count [*]sum
> + - verify sm3sum of memory area
> +
> +
> +Description
> +-----------
> +
> +The sm3sum command calculates the SM3_256 Hash from a
Are there variants of SM3? From what I understood, it's "equivalent" to
sha256 in terms of security and efficiency, but it's SM3, just that?
> +address with length of count bytes. If the -v option is
Can suggest:
"""
calculates the SM3 hash of data of ``count`` bytes at address ``address``.
"""
which highlights which parts of the command must be specific by the user.
s/-v/``-v``/
> +passed to the command, it compares the calculated hash
> +with the hash found at address sum.
> +
s/sum/``sum``/.
> +The SM3 secure hash, is calculated as specified by OSCCA GM/T
s/,//
> +0004-2012 SM3 and described at
> +
> +https://datatracker.ietf.org/doc/html/draft-sca-cfrg-sm3-02
> +
> +Parameters
> +----------
> +
> +address
> + address from where the sm3 hash is calculated
How is this value parsed? Is it deducted from the string (e.g. starts
with 0x or contains hex digits = hex, starts with 0, octal, otherwise
decimal), or is it a forced base? This needs to be specified.
> +
> +count
> + length in bytes of memory area for which the sm3 hash is calculated
> +
> +sum
> + address of hash to which the calculated hash gets stored
This is only true if you sum starts with "*" no? Otherwise it's the name
of the environment variable where to store the checksum?
> +
> + or if "-v" option is passed:
s/"-v"/``-v``/
> +
> + address of hash with which the calculated hash gets compared.
> +
> +Example
> +-------
> +
> +create some data
> +
+at address ``0x0000000100000000``
(do we need the leading zeroes?)
> +::
> +
> + u-boot=> mw 0x0000000100000000 0x426f6f46 1
> + u-boot=> md.b 0x0000000100000000 4
> + 00000000: 46 6f 6f 42 FooB
> +
> +and calculate the sm3sum from address and store it in environment
s/from address/of 4 bytes starting from address ``0x0000000100000000``/
> +variable hashval
> +
s/hashval/``hashval``/
> +::
> +
> + u-boot=> sm3sum 0x0000000100000000 4 hashval
> + sm3_256 for 100000000 ... 100000003 ==> cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7
> + u-boot=> print hashval
> + hashval=cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7
> + u-boot=>
> +
> +or calculate sm3sum from address and store it at address sum
s/from address/of 4 bytes starting from address ``0x0000000100000000``/
s/sum/``0x0000000110000000``/
> +
> +::
> +
> + u-boot=> sm3sum 0x0000000100000000 4 *0x0000000110000000
> + sm3_256 for 100000000 ... 100000003 ==> cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7
> +
> +and now check if this hash is a valid sm3sum with "-v" option
s/is a valid sm3sum/is the expected sm3sum hash value/
s/"-v"/``-v``/
> +
> +::
> +
> + u-boot=> sm3sum -v 0x0000000100000000 4 *0x0000000110000000
> + u-boot=> echo $?
> + 0
> +
> +example with wrong hash
> +
> +::
> +
> + u-boot=> sm3sum -v 0x0000000100000000 4 *0x0000000110000004
> + sm3_256 for 100000000 ... 100000003 ==> cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7 != e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7ffffffff ** ERROR **
> + u-boot=>
> +
> +
> +Configuration
> +-------------
> +
> +Enable the sm3sum command via Kconfig option CONFIG_CMD_SM3SUM.
s/CONFIG_CMD_SM3SUM/``CONFIG_CMD_SM3SUM``/
> +The "-v" option is separate enabled through Kconfig option
s/"-v"/``-v``/
> +CONFIG_SM3SUM_VERIFY.
s/CONFIG_SM3SUM_VERIFY/``CONFIG_SM3SUM_VERIFY``/
> +
> +
> +Return value
> +------------
> +
> +The return value $? is true (0) if the hash is calculated or if
> +the created hash is the same as the hash stored in memory at
> +address sum.
> +
> +The return value is false (1) if there is a problem with
> +calculating the hash, or if the hash is not the same as
> +the hash stored ar address sum.
This matches the expectations I got from reading
https://docs.u-boot.org/en/latest/usage/cmdline.html#general-rules
(point 3). So I would simply remove the return value section in this
patch here.
Cheers,
Quentin
More information about the U-Boot
mailing list