u-boot/doc/usage/cmd/sm3sum.rst
Heiko Schocher 1e79d9c763 doc: cmd: add documentation for sm3sum
add documentation for sm3sum command.

Signed-off-by: Heiko Schocher <hs@nabladev.com>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2026-02-11 11:13:47 +02:00

113 lines
2.9 KiB
ReStructuredText

.. SPDX-License-Identifier: GPL-2.0-or-later
.. Copyright Nabla Software Engineering GmbH
Written by Heiko Schocher <hs@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 hash of data of ``count`` bytes
at address ``address``. If the ``-v`` option is passed to the command,
it compares the calculated hash with the hash found at address ``sum``.
The SM3 secure hash is calculated as specified by OSCCA GM/T
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.
Hexadecimal string, 0x prefix optional.
count
length in bytes of memory area for which the sm3 hash is calculated
Hexadecimal string, 0x prefix optional.
sum
if it starts with ``*`` the string is interpreted as an address
in hexadecimal format to which the calculated hash gets stored.
else the string is interpreted as a name for an environment variable
in which the calculated hash is stored as string.
or if ``-v`` option is passed:
address of hash with which the calculated hash gets compared.
Example
-------
create some data
::
u-boot=> mw 0x100000000 0x426f6f46 1
u-boot=> md.b 0x100000000 4
00000000: 46 6f 6f 42 FooB
and calculate the sm3sum of 4 bytes starting from address ``0x100000000``
and store it in environment variable ``hashval``
::
u-boot=> sm3sum 0x100000000 4 hashval
sm3_256 for 100000000 ... 100000003 ==> cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7
u-boot=> print hashval
hashval=cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7
u-boot=>
or calculate sm3sum of 4 bytes starting from address ``0x100000000`` and
store it at address ``0x110000000``
::
u-boot=> sm3sum 0x100000000 4 *0x110000000
sm3_256 for 100000000 ... 100000003 ==> cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7
and now check if this hash is the expected sm3sum hash value with ``-v``
option
::
u-boot=> sm3sum -v 0x100000000 4 *0x110000000
u-boot=> echo $?
0
example with wrong hash
::
u-boot=> sm3sum -v 0x100000000 4 *0x110000004
sm3_256 for 100000000 ... 100000003 ==> cdf49da4e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7 != e33017bf2d9fe87b885d80c9a7c920be7e10ffb8c89036a1eb1503b7ffffffff ** ERROR **
u-boot=>
Configuration
-------------
Enable the sm3sum command via Kconfig option ``CONFIG_CMD_SM3SUM``.
The ``-v`` option is separate enabled through Kconfig option
``CONFIG_SM3SUM_VERIFY``.