Add portable firmware TPM 2.0 implementation (fwTPM) built on wolfCrypt.
Implements 105/113 TPM 2.0 v1.38 commands (93%) as a standalone server
with socket and TIS transports, NV storage, and full CI/fuzz coverage.
Resolves#457. When the SPI device could not be opened (e.g., kernel TPM
driver owns it), wolfTPM failed silently with no error output. Users had
no indication of what went wrong or how to fix it.
Changes:
- Make TPM2_Init failed message in wolfTPM2_Init_ex always print
(previously required --enable-debug)
- Add SPI/I2C open failure logging in hal/tpm_io_linux.c: permission
denied prints unconditionally, other errors print with DEBUG_WOLFTPM
- Add autodetect scan exhaustion message (DEBUG_WOLFTPM)
- Fix examples (caps, wrap_test, bench, pkcs7) that silently returned
on init failure to print error code and RC string
- Update 13 other examples to include error code in init failure message
- Change default TPM_SPI_CS to 1 (CE1/GPIO7) to match official
Raspberry Pi tpm-slb9670 overlay used by LetsTrust and Infineon HATs
- Use _spi_get_bus_and_cs() with explicit speed/mode parameters
for proper SPI device initialization
- Add required includes for asm/io.h and dm/device-internal.h
- Improve debug message prefixes for clarity
Tested on Raspberry Pi 4 with Infineon SLB9672 TPM HAT.
Added Infineon Modus Toolbox support. See `wolfssl/IDE/Infineon/README.md` for setup instructions.
Added support for Infineon CyHal I2C support.
Added Firmware extraction tool
Added Firmware update example application `examples/firmware/ifx_fw_update`.
Added support for vendor capabilities `TPM_CAP_VENDOR_PROPERTY`.
Added `XSLEEP_MS` macro for firmware update delay.
Added support for getting key group id, operational mode and update counts.
Added support for abandoning an update.
Added support for firmware update done, but not finalized
Fix auto-detect to not define SLB9672/SLB9673.