Hi Ayoub, On Tue, Sep 1, 2026 at 8:15 AM Ayoub Zaki <[email protected]> wrote: > > U-Boot can sign FIT images with ECDSA on the host but on most boards it > cannot verify them. ECDSA verification is dispatched through a > UCLASS_ECDSA driver and the only implementations in tree are backed by > hardware or firmware such as STM32MP ROM API. > On any other platform enabling CONFIG_ECDSA_VERIFY builds the > crypto_algo entries but ecdsa_verify() fails with -ENODEV because > uclass_first_device_err() finds no device. > > This series adds a software UCLASS_ECDSA driver built on the MbedTLS ECP > library which is already vendored in tree but currently reachable only > from the TLS bundle. > > Testing: > - 33 tests pass on sandbox (30 existing RSA vboot cases, 2 new ECDSA > cases, and the host-side test_fit_ecdsa) > - the new tests cover, for each curve, a valid signature that verifies > and boots, a tampered signature that is rejected, and a valid > signature checked against a different public key that is rejected > - I confirmed the tests actually catch a broken driver by making > verify() return 0 unconditionally: both fail and pass again once > reverted > - no regressions: a baseline build of the same test selection gives an > identical pass/fail/error count, plus the two new tests > - each patch builds individually, so the series bisects > - a MBEDTLS_LIB_TLS build was checked by hand, since no defconfig > enables it and CI would not catch a break there >
Please use the new email list '[email protected]'. Can you please rebase on the existing ECDSA series from Philippe below? It is reviewed and pending merge. https://lore.kernel.org/u-boot/[email protected]/ Thanks and regards, Raymond > Open points I would appreciate opinions on: > > - No SPL support. It would need SPL_ECDSA_VERIFY_MBEDTLS and > SPL_MBEDTLS_LIB_ECDSA, and the size cost matters far more there, so I > left it out of this series rather than guess at what is acceptable. > > - ecdsa_verify() uses uclass_first_device_err() so on a board with > both a hardware engine and this software driver the choice is > arbitrary bind order. No board is in that position today, but the > selection probably wants to be explicit before one is. > > Ayoub Zaki (7): > lib: ecdsa: read private keys from '<name>.key' like RSA > mbedtls: factor out shared bignum and ASN.1 objects > mbedtls: add ECDSA library module > lib: ecdsa: add software ECDSA verification using MbedTLS > test: vboot: add ECDSA verified boot tests > doc: fit: document ECDSA key creation and verification > MAINTAINERS: add an entry for lib/ecdsa > > MAINTAINERS | 7 + > configs/sandbox_defconfig | 2 + > doc/usage/fit/signature.rst | 38 +++++ > lib/ecdsa/Kconfig | 12 ++ > lib/ecdsa/Makefile | 1 + > lib/ecdsa/ecdsa-libcrypto.c | 2 +- > lib/ecdsa/ecdsa-mbedtls.c | 141 +++++++++++++++++ > lib/mbedtls/Kconfig | 45 ++++++ > lib/mbedtls/Makefile | 29 ++-- > lib/mbedtls/mbedtls_def_config.h | 19 +++ > test/py/tests/test_vboot_ecdsa.py | 148 ++++++++++++++++++ > test/py/tests/vboot/sign-configs-ecdsa256.its | 45 ++++++ > test/py/tests/vboot/sign-configs-ecdsa384.its | 45 ++++++ > test/py/tests/vboot/sign-images-ecdsa256.its | 42 +++++ > test/py/tests/vboot/sign-images-ecdsa384.its | 42 +++++ > 15 files changed, 606 insertions(+), 12 deletions(-) > create mode 100644 lib/ecdsa/ecdsa-mbedtls.c > create mode 100644 test/py/tests/test_vboot_ecdsa.py > create mode 100644 test/py/tests/vboot/sign-configs-ecdsa256.its > create mode 100644 test/py/tests/vboot/sign-configs-ecdsa384.its > create mode 100644 test/py/tests/vboot/sign-images-ecdsa256.its > create mode 100644 test/py/tests/vboot/sign-images-ecdsa384.its > > -- > 2.43.0 >
