Commit Graph

540 Commits (80dbb6da15ab5eb348f5d76049dabd03be5bdd67)

Author SHA1 Message Date
David Garske 80dbb6da15 update_disk: golden slot tried after the A/B attempts, exempt from anti-rollback and never written 2026-10-07 20:07:38 -07:00
Mattia Moffa aa88c79885
Merge pull request #927 from dgarske/disk_debug_uart
Fix the DEBUG_UART=0 build for update_disk boot targets
2026-10-07 20:42:18 +02:00
David Garske 84603a5054 gzip: table-driven Huffman decoder by default, GZIP_SMALL=1 keeps the bit-serial one 2026-10-07 16:54:53 +02:00
David Garske 5ecce1a6c9 disk: fix the DEBUG_UART=0 build for every disk boot target 2026-10-06 20:11:29 -07:00
David Garske 94bcb81e68 docs: use a generic path in the VA416x0 build log output 2026-10-06 18:33:50 +02:00
David Garske 2a337e72c6 i2c: add a bit-banged back-end selectable with I2C_BITBANG 2026-10-06 18:14:10 +02:00
David Garske 508ad6a26d Add wolfBoot target for Infineon PSOC Control C3 2026-10-06 18:14:10 +02:00
David Garske 97e895613d tpm: add a TIS-over-I2C transport and a generic I2C driver interface 2026-10-06 18:14:10 +02:00
Daniele Lacamera f56551ab74 address PR 918 review: TOUCH_LINES AES, finish ESP256 migration in docs
WOLFPSA_AES_FAST replaced with WOLFSSL_AES_TOUCH_LINES per the wolfPSA
5.9.4 constant-time policy; DICE.md and the MCXN verifier comment now say
ESP256 and state the RFC 9783 legacy-ID compatibility note.
2026-10-01 17:20:43 +02:00
David Garske db04b6c365 docs: document the x86 FSP Linux bzImage/initrd payload, OS PCR measurement, and UPD decoder 2026-09-30 09:25:16 +02:00
Daniele Lacamera 8bdcc4e761 F-14272: consume the update state in the DISABLE_BACKUP path
The direct update->BOOT copy left the update partition at
IMG_STATE_UPDATING, so wolfBoot_start() re-entered wolfBoot_update(0)
on every boot: a wasted verification, and with ALLOW_DOWNGRADE a full
BOOT re-flash on every power-up. Reset the update state to NEW after
the update succeeds, as the swap path's final erase does; the write is
best effort, so in setups where the bootloader cannot write the update
partition the documented application requirement covers it. Add a
DISABLE_BACKUP unit variant with a state-consumption test.
2026-09-29 08:43:26 +02:00
David Garske 8f4578c84e Add optional boot confirmation and rollback for the disk boot path 2026-09-29 07:41:43 +02:00
David Garske 490a3791f9 Fix to keep the FIT DTB's own bootargs unless LINUX_BOOTARGS is explicitly configured 2026-09-24 16:03:12 +02:00
David Garske 23989067ec zynqmp: add non-cacheable DMA window and hal_dma_set_noncached() 2026-09-24 13:27:04 +02:00
David Garske 7b71f28aa3 versal: support DDR apertures above 1 TB in the translation table 2026-09-24 13:13:33 +02:00
Aidan Garske 181f79586e Document the i.MX RT700 target 2026-09-24 13:12:36 +02:00
Sameeh Jubran ec05d5a7d5 sbom: drop nested wolfcrypt CPE
Re-vendor wolfGlass at 3b708da. wolfcrypt stays a nested component
(name, version, PURL). Matching uses the wolfssl CPE only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 13:10:18 +02:00
Aidan Garske c48a882cd9 Add a generic secure application handoff with a measured boot record 2026-09-22 15:35:42 +02:00
Alex Lanzano 386147ed94 Rename board.h to wolfHAL_board.h 2026-09-22 15:29:32 +02:00
David Garske fae9e53653 hooks: add pre-boot hook, DTB accessor and FDT alias/reg helpers 2026-09-21 18:10:09 +02:00
David Garske 4093fa0e17 Add NXP i.MX 8QuadMax MEK port including BL33 support 2026-09-21 18:07:44 +02:00
David Garske e353b20504 va416x0: fix vector table alignment and length, FRAM defects and ML-DSA 2026-09-21 17:13:42 +02:00
Aidan Garske b8254ba33f Document the STM32H5 fwTPM secure RAM budget and stack reservation 2026-09-17 13:06:11 +02:00
David Garske a8c8c19fe8 Add LS1028A eSDHC SD card disk boot support 2026-09-17 12:33:19 +02:00
David Garske 8eafe1ef76
Merge pull request #890 from bigbrett/tc4-wolfboot
AURIX TC4xx support
2026-09-14 14:22:21 -07:00
David Garske b0fe251747 Add Nuvoton NuMaker M2354 Cortex-M23 target with TrustZone 2026-09-14 18:08:40 +02:00
Marco Oliverio 1b99727d4c pic32cz: fix: use the right IMAGE_HEADER_SIZE value
otherwise the VTOR will be underaligned
2026-09-14 17:53:04 +02:00
Brett Nicholas 6d652d444f Support for AURIX TC4xx host and CSRM cores 2026-09-12 09:21:38 -06:00
David Garske 871ab86dc5
Merge pull request #886 from bigbrett/aurix-makefile-reorg
AURIX makefile housekeeping
2026-09-10 16:13:56 -07:00
Brett Nicholas 678781db39 AURIX tc3 ARCH/TARGET refactor anticipating TC4xx 2026-09-10 10:19:08 -06:00
David Garske a2639e88f8 versal: report EL2 exceptions, fix FIT ramdisk fixup and the EL2->EL1 cache handoff 2026-09-10 08:17:21 +02:00
David Garske 24c23e767b Add T1040 eSDHC SD card disk boot support, first big-endian disk-boot target 2026-09-10 08:15:48 +02:00
David Garske 99725d278c
Merge pull request #878 from bigbrett/tc3-tweaks
tc3 quickfixes
2026-09-02 14:08:40 -07:00
David Garske 95227f823c fdt: rewrite device tree parser with capacity bound and full validation 2026-09-02 10:48:52 +02:00
David Garske 664b09a075 update_disk: load signed image from a file when a filesystem is present 2026-09-02 10:47:33 +02:00
Brett Nicholas 626db410be static library docs 2026-09-01 09:19:36 -06:00
David Garske 25cdd5a0d7 c2000: add wolfBoot TI C28x (TMS320F28P550SJ) secure-boot XIP port 2026-08-25 00:01:33 +02:00
David Garske a5c94502d4
Merge pull request #868 from danielinux/fenrir-fixes-2026-08-21
Fenrir fixes 2026 08 21
2026-08-24 13:34:37 -04:00
David Garske c03d928567 Enable UART_QSPI_PROGRAM by default in polarfire_mpfs250_hss_l2lim.config 2026-08-24 18:51:06 +02:00
David Garske 6f846887f3 imx95_m7: document the trust boundary of verification on this target 2026-08-24 18:46:41 +02:00
David Garske 4fedc93ed8 imx95_m7: fix console/status overlap, cache handoff, timebase and build wiring 2026-08-24 18:46:41 +02:00
David Garske 8015a1fa4f Peer review fixes (thanks Daniele) 2026-08-24 12:47:34 +02:00
David Garske 88984858d5 Peer review fixes (thanks Jack) 2026-08-24 12:47:34 +02:00
David Garske 9a4f800546 cm4: hardware-validate eMMC A/B disk boot and FIPS on CM4 (arm64 header, 0x200000 load, mini-UART console) 2026-08-24 12:47:34 +02:00
David Garske 71b855f7b5 cm4: add wolfCrypt FIPS 140-3 support + CI, SDHCI unit test, review fixes 2026-08-24 12:47:34 +02:00
David Garske eb7ad83ca0 cm4: add Raspberry Pi Compute Module 4 (BCM2711 Cortex-A72) target with authenticated boot 2026-08-24 12:47:34 +02:00
Daniele Lacamera 431b01560d F-9759: document that QE/FMan microcode is not authenticated
The P1021 QE and T10xx QE/FMan microcode blobs are validated only for
structural integrity (header magic, version, size bounds) before they
are activated; no cryptographic authentication is applied. State that
in Targets.md for both targets, with the deployment-model reasoning:
the P1021 microcode region sits inside the update partition, and the
T10xx regions require local board flash write access, which also
allows replacing the wolfBoot image itself.

Same residual claim as F-8000 and F-9761 (T10xx QE and FMan paths);
the bounds fixes for all three are already in master (000c05c7,
91c020a2). Product decision: no microcode authentication feature.
2026-08-21 08:52:59 +02:00
Sameeh Jubran da1d2cfc27 sbom: generate the keystore before checking the source list
src/keystore.c holds the public keys that authorise a firmware update.  The
build generates it from the signing key, so a fresh checkout does not hold it,
and the missing-source guard read that absence as an absent submodule.  Every
Make-path SBOM job failed on it.

Depend on it, so it exists before the guard runs, and name it in the source
list unconditionally: sbom.mk expands SBOM_SRCS through $(call) while reading
the makefile, so a file that appears later can never reach the document.
Without that second half the guard passed while the document was still one
source short, which is the silent under-report the guard exists to prevent.

Build the list with $(shell) rather than $(wildcard).  GNU make 3.81 caches
directory contents, so it never sees a source generated during the same run.

Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
2026-08-20 15:22:16 +02:00
Sameeh Jubran 864a5252d2 docs: state what the wolfBoot SBOM does not cover
Four exclusions were implicit, and a reader had no way to see them from
the document itself:

  * the compiler runtime (libgcc, newlib) is linked into every image and
    appears nowhere;
  * of the six submodules only wolfSSL becomes a component, so a wolfTPM,
    wolfHSM or wolfPKCS11 advisory cannot match, even though the captured
    configuration records that the stack is compiled in;
  * the document records the source set rather than each file, so SPDX
    reports filesAnalyzed: false and the Merkle hash cannot be taken apart;
  * WOLFCRYPT_ONLY is set for nearly every configuration, so a scanner
    reports wolfSSL TLS advisories against an image with no TLS, and
    wolfBoot ships no VEX statement to answer them with.

The first is inherent to a source-set SBOM. The other three are open
work, and the wolfGlass component table and a VEX target are where they
get closed.

Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
2026-08-20 15:22:16 +02:00
Sameeh Jubran 433c6ae85c sbom: name each document after the configuration it describes
Both output files were wolfboot-<version>.{cdx,spdx}.json, so every
configuration at a given version wrote to the same two paths. wolfBoot has
on the order of 100 target configurations and each is a different image
with a different source set, so building a second one overwrote the first
with no warning.

Put TARGET, SIGN and HASH in the name, on the Make and the CMake route
alike, so the two routes stay in step.

This does not fix the identity of the documents themselves. gen-sbom
derives both the CycloneDX serialNumber and the SPDX documentNamespace
from name and version only, so sim and stm32h7 at 2.9.0 still share
urn:uuid:6dc51759-ade2-5967-b392-2f23ed0eb4df, which a tool that keys on
serialNumber treats as one project. That is a wolfGlass change, and it
is not worked around here.

Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
2026-08-20 15:22:16 +02:00