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 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]/

it looks like almost duplicate work :-(

I will wait until merged then propose other changes>
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


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

Reply via email to