u-boot/include/linux
Tom Rini d467f359c4 Merge patch series "Integrate MbedTLS v3.6 LTS with U-Boot"
Raymond Mao <raymond.mao@linaro.org> says:
Integrate MbedTLS v3.6 LTS (currently v3.6.0) with U-Boot.

Motivations:
------------

1. MbedTLS is well maintained with LTS versions.
2. LWIP is integrated with MbedTLS and easily to enable HTTPS.
3. MbedTLS recently switched license back to GPLv2.

Prerequisite:
-------------

This patch series requires mbedtls git repo to be added as a
subtree to the main U-Boot repo via:
    $ git subtree add --prefix lib/mbedtls/external/mbedtls \
          https://github.com/Mbed-TLS/mbedtls.git \
          v3.6.0 --squash
Moreover, due to the Windows-style files from mbedtls git repo,
we need to convert the CRLF endings to LF and do a commit manually:
    $ git add --renormalize .
    $ git commit

New Kconfig options:
--------------------

`MBEDTLS_LIB` is for MbedTLS general switch.
`MBEDTLS_LIB_CRYPTO` is for replacing original digest and crypto libs with
MbedTLS.
`MBEDTLS_LIB_CRYPTO_ALT` is for using original U-Boot crypto libs as
MbedTLS crypto alternatives.
`MBEDTLS_LIB_X509` is for replacing original X509, PKCS7, MSCode, ASN1,
and Pubkey parser with MbedTLS.
By default `MBEDTLS_LIB_CRYPTO_ALT` and `MBEDTLS_LIB_X509` are selected
when `MBEDTLS_LIB` is enabled.
`LEGACY_CRYPTO` is introduced as a main switch for legacy crypto library.
`LEGACY_CRYPTO_BASIC` is for the basic crypto functionalities and
`LEGACY_CRYPTO_CERT` is for the certificate related functionalities.
For each of the algorithm, a pair of `<alg>_LEGACY` and `<alg>_MBEDTLS`
Kconfig options are introduced. Meanwhile, `SPL_` Kconfig options are
introduced.

In this patch set, MBEDTLS_LIB, MBEDTLS_LIB_CRYPTO and MBEDTLS_LIB_X509
are by default enabled in qemu_arm64_defconfig and sandbox_defconfig
for testing purpose.

Patches for external MbedTLS project:
-------------------------------------

Since U-Boot uses Microsoft Authentication Code to verify PE/COFFs
executables which is not supported by MbedTLS at the moment,
addtional patches for MbedTLS are created to adapt with the EFI loader:
1. Decoding of Microsoft Authentication Code.
2. Decoding of PKCS#9 Authenticate Attributes.
3. Extending MbedTLS PKCS#7 lib to support multiple signer's certificates.
4. MbedTLS native test suites for PKCS#7 signer's info.

All above 4 patches (tagged with `mbedtls/external`) are submitted to
MbedTLS project and being reviewed, eventually they should be part of
MbedTLS LTS release.
But before that, please merge them into U-Boot, otherwise the building
will be broken when MBEDTLS_LIB_X509 is enabled.

See below PR link for the reference:
https://github.com/Mbed-TLS/mbedtls/pull/9001

Miscellaneous:
--------------

Optimized MbedTLS library size by tailoring the config file
and disabling all unnecessary features for EFI loader.
From v2, original libs (rsa, asn1_decoder, rsa_helper, md5, sha1, sha256,
sha512) are completely replaced when MbedTLS is enabled.
From v3, the size-growth is slightly reduced by refactoring Hash functions.
From v6, smaller implementations for SHA256 and SHA512 are enabled and
target size reduce significantly.
Target(QEMU arm64) size-growth when enabling MbedTLS:
v1: 6.03%
v2: 4.66%
v3 - v5: 4.55%
v6: 2.90%

Tests done:
-----------

EFI Secure Boot test (EFI variables loading and verifying, EFI signed image
verifying and booting) via U-Boot console.
EFI Secure Boot and Capsule sandbox test passed.

Known issues:
-------------

None.

Link: https://lore.kernel.org/u-boot/20241003215112.3103601-1-raymond.mao@linaro.org/
2024-10-14 17:59:04 -06:00
..
byteorder include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
clk
mfd/syscon mfd: syscon: atmel-smc: Add new helpers to ease SMC regs manipulation 2022-12-08 18:06:27 +02:00
mtd mtd: spi-nor: Clear Winbond SR3 WPS bit on boot 2024-10-10 08:10:12 -06:00
soc/ti tree-wide: Replace http:// link with https:// link for ti.com 2023-11-10 11:01:50 -05:00
unaligned linux/unaligned: remove unused access_ok.h 2023-05-31 14:05:34 -04:00
usb usb: gadget: atmel: Add DM_USB_GADGET support 2024-08-06 14:58:14 +02:00
apm_bios.h
apple-mailbox.h
arm-smccc.h firmware: psci: Fix bind_smccc_features psci check 2024-03-13 12:40:43 -04:00
asn1.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
asn1_ber_bytecode.h
asn1_decoder.h
bch.h
bitfield.h
bitmap.h linux/bitmap.h: add bitmap_empty helper 2024-07-26 01:28:09 +02:00
bitops.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
bitrev.h
bug.h
build_bug.h Fix sparse checks processing 2023-05-15 14:08:45 -04:00
clk-provider.h clk: clk-mux: Make public the clk_fetch_parent_index 2024-07-06 15:39:22 -03:00
compat.h Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet" 2024-05-20 13:35:03 -06:00
compiler-clang.h
compiler-gcc.h
compiler-intel.h
compiler.h
compiler_attributes.h
compiler_types.h compiler: Ensure __builtin_*_overflow() support 2024-08-15 16:14:36 -06:00
completion.h
const.h
crc7.h
crc16.h
crc32.h
ctype.h
delay.h
dma-direction.h
dma-mapping.h
drm_dp_helper.h
edd.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
err.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
errno.h
ethtool.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
fb.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
if_ether.h
if_vlan.h
immap_qe.h qe: Add <config.h> to linux/immap_qe.h 2023-12-21 08:54:37 -05:00
input.h
intel-smc.h
io.h
ioctl.h
iopoll.h
ioport.h
kbuild.h
kconfig.h kconfig: binman: Check for SPL instead of XPL 2024-10-11 11:44:48 -06:00
kernel.h mbedtls: add mbedtls into the build system 2024-10-14 17:58:12 -06:00
libfdt.h
libfdt_env.h
linkage.h
linux_string.h
list.h linux: list: add a function to count list nodes 2024-07-31 09:53:01 +02:00
list_sort.h
litex.h liteeth: LiteX Ethernet device 2022-11-28 10:25:17 -05:00
log2.h
lzo.h
math64.h
mbus.h arm: mvebu: mbus: Fix mbus driver to work also after U-Boot relocation 2022-08-23 12:35:37 +02:00
mdio.h net: phy: Add MDIO PCS 2.5G and 5G speed macros from Linux 2023-04-07 14:21:37 +02:00
mii.h include/linux/mii.h: Add <linux/types.h> 2023-11-07 14:50:52 -05:00
netdevice.h
oid_registry.h
poison.h
posix_types.h
printk.h
pruss_driver.h
psci.h
rational.h
rbtree.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
rbtree_augmented.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
screen_info.h
serial_reg.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
sizes.h
stat.h
stddef.h Fix sparse checks processing 2023-05-15 14:08:45 -04:00
string.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
stringify.h
time.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
typecheck.h
types.h common: define time_t as 64bit 2023-07-25 12:44:46 -04:00
utf.h
xxhash.h
zstd.h lib: zstd: update to latest Linux zstd 1.5.2 2023-01-18 19:04:17 -05:00
zstd_errors.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00
zstd_lib.h include: linux: Remove duplicate newlines 2024-07-29 15:01:04 -06:00