How so-w-on/cryptoagile_bootloader works
This repository contains STM32F4 firmware examples: an application, a signed bootloader, and a crypto-agile bootloader variant. The bootloader workflow initializes hardware, checks whether the installed application is valid, reports failure or success over UART, and jumps to the application on success. The README describes the signed ECDSA/SHA-256 baseline and future multi-algorithm/PQC work; it does not establish that PQC algorithms are implemented. Bootloader validation and crypto call details are only partly sampled, so those links are marked unverified where appropriate.
Main entry points: Src/main.c Agile boot flow · Src/main.c Signed boot flow · bl_jump.c App validation · Src/main.c Agile application
Components 11
Bootloaders
- Agile boot flow
Cryptoagile_PQC_bootloader/bootloader/Core/Src/main.c - Signed boot flow
Signed_bootloader/bootloader/Core/Src/main.c
Applications
- Agile application
Cryptoagile_PQC_bootloader/Application/Core/Src/main.c - Signed application
Signed_bootloader/Application/Core/Src/main.c
Signature and crypto
- App validation
Cryptoagile_PQC_bootloader/bootloader/Core/Src/bl_jump.c - App validation
Signed_bootloader/bootloader/Core/Src/bl_jump.c - App metadata
Cryptoagile_PQC_bootloader/bootloader/Core/Inc/app_header.h - ECC and SHA-256
Cryptoagile_PQC_bootloader/bootloader/Core/Src/tinycrypt
Board platform
- UART and GPIO
Cryptoagile_PQC_bootloader/bootloader/Core/Src/main.c - Nucleo board I/O
Cryptoagile_PQC_bootloader/bootloader/Drivers/BSP/STM32F4xx-Nucleo/stm32f4xx_nucleo.c
Other components
- STM32 device
Connections 13
- STM32 device → Agile boot flow: starts
- Agile boot flow → UART and GPIO: initializes and reports
Cryptoagile_PQC_bootloader/bootloader/Core/Src/main.c - Agile boot flow → App validation: checks app
Cryptoagile_PQC_bootloader/bootloader/Core/Src/main.c - Agile boot flow → Agile application: jumps on success
- App validation → App metadata: checks metadata
- App validation → ECC and SHA-256: may verify signature
- STM32 device → Signed boot flow: starts
- Signed boot flow → App validation: checks app
Signed_bootloader/bootloader/Core/Src/main.c - Signed boot flow → UART and GPIO: reports status
- Signed boot flow → Signed application: jumps on success
- App validation → ECC and SHA-256: may verify signature
- Agile application → Nucleo board I/O: uses board I/O
- Signed application → Nucleo board I/O: uses board I/O