Hi Philippe, On Thu, Feb 19, 2026 at 8:26 AM Philippe Reynes <[email protected]> wrote: > > Add an software ecdsa driver so it is > now possible to use ecdsa signature on > board without ecdsa hardware support. > > Signed-off-by: Philippe Reynes <[email protected]> > --- > v2: > - no change > > drivers/crypto/Kconfig | 2 ++ > drivers/crypto/Makefile | 1 + > drivers/crypto/ecdsa/Kconfig | 6 ++++++ > drivers/crypto/ecdsa/Makefile | 6 ++++++ > drivers/crypto/ecdsa/ecdsa-sw.c | 33 +++++++++++++++++++++++++++++++++ > 5 files changed, 48 insertions(+) > create mode 100644 drivers/crypto/ecdsa/Kconfig > create mode 100644 drivers/crypto/ecdsa/Makefile > create mode 100644 drivers/crypto/ecdsa/ecdsa-sw.c > > diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig > index 0d58e3910fe..cf49e5c0f7e 100644 > --- a/drivers/crypto/Kconfig > +++ b/drivers/crypto/Kconfig > @@ -12,4 +12,6 @@ source "drivers/crypto/nuvoton/Kconfig" > > source "drivers/crypto/tegra/Kconfig" > > +source "drivers/crypto/ecdsa/Kconfig" > + > endmenu > diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile > index e4a4482b7f3..8170e4cae9c 100644 > --- a/drivers/crypto/Makefile > +++ b/drivers/crypto/Makefile > @@ -4,6 +4,7 @@ > # http://www.samsung.com > > obj-$(CONFIG_EXYNOS_ACE_SHA) += ace_sha.o > +obj-$(CONFIG_ECDSA) += ecdsa/ > obj-y += aes/ > obj-y += rsa_mod_exp/ > obj-y += fsl/ > diff --git a/drivers/crypto/ecdsa/Kconfig b/drivers/crypto/ecdsa/Kconfig > new file mode 100644 > index 00000000000..308824d8421 > --- /dev/null > +++ b/drivers/crypto/ecdsa/Kconfig > @@ -0,0 +1,6 @@ > +config ECDSA_SW > + bool "Enable driver for ECDSA in software" > + depends on ECDSA_MBEDTLS > + help > + Enable driver for ECDSA operations in software. Currently > + it supports multiple ECDSA algorithm.
Same comments as I placed in your patch [0/9], ECDSA_SW is not required and can be replaced by ECDSA_MBEDTLS. Regards, Raymond > diff --git a/drivers/crypto/ecdsa/Makefile b/drivers/crypto/ecdsa/Makefile > new file mode 100644 > index 00000000000..8f9e5a767f8 > --- /dev/null > +++ b/drivers/crypto/ecdsa/Makefile > @@ -0,0 +1,6 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# Copyright (C) 2026 Philippe Reynes <[email protected]> > +# > + > +obj-$(CONFIG_ECDSA_SW) += ecdsa-sw.o > diff --git a/drivers/crypto/ecdsa/ecdsa-sw.c b/drivers/crypto/ecdsa/ecdsa-sw.c > new file mode 100644 > index 00000000000..0d526371ecb > --- /dev/null > +++ b/drivers/crypto/ecdsa/ecdsa-sw.c > @@ -0,0 +1,33 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (C) 2026 Philippe Reynes <[email protected]> > + */ > +#include <dm/device.h> > +#include <linux/types.h> > +#include <u-boot/ecdsa.h> > +#include <crypto/ecdsa-uclass.h> > +#include <dm/platdata.h> > +#include <crypto/internal/sw_ecdsa.h> > + > +static int ops_sw_ecdsa_verify(__always_unused struct udevice *dev, > + const struct ecdsa_public_key *pubkey, > + const void *hash, size_t hash_len, > + const void *signature, size_t sig_len) > +{ > + return sw_ecdsa_verify(pubkey, hash, hash_len, signature, sig_len); > +} > + > +static const struct ecdsa_ops sw_ecdsa_ops = { > + .verify = ops_sw_ecdsa_verify, > +}; > + > +U_BOOT_DRIVER(sw_ecdsa) = { > + .name = "sw_ecdsa", > + .id = UCLASS_ECDSA, > + .ops = &sw_ecdsa_ops, > + .flags = DM_FLAG_PRE_RELOC, > +}; > + > +U_BOOT_DRVINFO(sw_ecdsa) = { > + .name = "sw_ecdsa", > +}; > -- > 2.43.0 >

