[RFC] Plan to Migrate U-Boot from OpenSSL Engines to Providers
Ahmad Fatoum
a.fatoum at pengutronix.de
Thu Jul 24 14:34:07 CEST 2025
Hello,
On 7/22/25 17:48, Enric Balletbo i Serra wrote:
> * Introduce a new config option OPENSSL_NO_DEPRECATED.
> This option will allow building U-Boot without any ENGINE support.
> When enabled, hardware-backed signing (PKCS#11, etc.) will not be
> available, but U-Boot will be buildable on distributions that have
> removed ENGINE support from OpenSSL.
Gating the deprecated openssl engine support behind a config option is a
good first step.
> * Add support for OpenSSL Providers
[snip]
> Arguments for this change:
Fully in agreement.
> Impact:
>
> Users who require hardware-backed signing will need to ensure their
> provider (e.g., PKCS#11 provider) is available and configured.
>
> The transition will be gradual: ENGINE support can be kept as an
> option for a while, but the default and recommended path will be
> providers.
That would be my preference as well.
> Questions for the community:
>
> * Do we need to maintain ENGINE compatibility for a transition period,
> or can we remove ENGINE support entirely and move fully to providers?
I am afraid this might complicate things a lot downstream. For Debian,
the pkcs11-provider package is still in testing. Even once it hits
stable, it will take a while for it to be available generally. IMO we
will have to keep ENGINE support around for quite a while still.
> * Are there users or workflows that still depend on ENGINE-based
> hardware signing that cannot be migrated to providers?
A lot of stuff still use ENGINEs, but having mkimage support PROVIDERs
as well is a first step in migrating them. With mkimage supporting both,
users can gradually migrate.
> Next Steps:
>
> * Add the OPENSSL_NO_DEPRECATED config and update documentation.
> * Begin refactoring the signing code to use providers by default.
I think it might be better to explicitly point out OpenSSL engines in
the option name. Maybe CONFIG_OPENSSL_ENGINE?
> Note that we feel comfortable with adding the OPENSSL_NO_DEPRECATED
> config option and can proceed with that change. However, we are not
> very familiar with the details of migrating from OpenSSL Engines to
> Providers. Any help, guidance, or code contributions from community
> members experienced with the OpenSSL provider API would be greatly
> appreciated.
I added PKCS#11 support via providers to qpid-proton last year. Because
this was new to me, I added support via ENGINEs first, then switched to
PROVIDER and then squashed the end result.
You may find my patch doing the switch from ENGINE to PROVIDER useful:
https://github.com/a3f/qpid-proton/commit/a14fa72c67f47f152d2
And here's the final change:
https://github.com/apache/qpid-proton/commit/96cbea1052a2196d
Feel free to shoot me a mail if you have questions about them.
> Please let us know your thoughts, concerns, or if you are interested
> in helping or you are already working with this migration.
I am happy to assist with reviewing the patches if you Cc me on them.
Cheers and thanks for picking up the work!
Ahmad
>
> Best regards,
>
> Eddie and Enric
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the U-Boot
mailing list