Hi,
On 9/1/26 17:19, Raymond Mao wrote:
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 therePlease 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]/
it looks like almost duplicate work :-( I will wait until merged then propose other changes>
Thanks and regards, RaymondOpen 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
Mit freundlichen Grüßen / Kind regards -- Ayoub Zaki Embedded Systems Consultant Vaihinger Straße 2/1 D-71634 Ludwigsburg Email : [email protected] Homepage : https://embetrix.com VAT No. : DE313902634
