You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document maps each wolfSSL product to the build systems it ships, the SBOM
composition method, and the constraints. It is the companion to PLAN.md. It
follows ASD-STE100 Simplified Technical English.
The roster and the tiers come from the wolfSSL Family Supported-Platforms matrix.
The front-end family, the composition flavor, and the constraints come from the
wolfGlass two-axis model.
Facts marked with a check are verified in the local workspace. Facts marked with
a cross are not in this checkout; verify them in the source checkout before you
attest them.
1. How to read the matrix
An SBOM needs two independent inputs. The matrix uses two axes for them.
Axis 1 is the config. It records what features the build enabled.
Axis 2 is the composition. It records what artifact the build produced.
A product also uses one or more front ends. A front end is the build-system
adapter that produces the two inputs. One product can use many front ends.
2. Legend
Front-end codes:
Code
Meaning
A
Autotools (configure + Makefile.am).
C
CMake.
M
Make or arch.mk.
IAR
IAR Embedded Workbench project (.ewp).
CDB
Compilation database (compile_commands.json).
RT
Route-through (a wrapper that runs the product build).
Ecosystem or bindings tool (pip, cargo, go, Maven, .NET).
Status marks:
Mark
Meaning
✅
Ships today. The build files exist in-tree now.
▲
Needs the promoted wolfGlass front end.
○
Documented port. Not a first-class in-tree build file.
▢
Restricted vendor stub. The build files are not public.
✖
Not applicable.
✔
Verified in this workspace.
✘
Not in this checkout. Verify at the source.
Composition flavor:
Code
Meaning
LIB
Record the built library. Input: --lib.
SRC
Record the compiled source set. Input: --srcs-file.
DEP
Record a wrapper package and a declared wolfSSL dependency. Input: --dep-wolfssl.
*
As-built or integrity-locked constraint. Hash the artifact as built. Do not regenerate. Do not substitute a source list.
The * mark is a constraint, not a fourth flavor. It attaches to LIB for FIPS
userspace canisters and for kernel modules.
3. Axis 1 — config values
Value
gen-sbom input
Used by
options.h
--options-h
wolfSSL library builds.
user_settings.h
--user-settings
embedded, IDE, wolfHSM, wolfSentry, Kits.
config.h
product-local --options-h or --user-settings
wolfIP, wolfEngine.
kernel .config
kbuild makes a header from autoconf.h, then --options-h
linuxkm, bsdkm, wolfGuard.
The config is necessary for every row. It is sufficient for none. Pair it with a
composition mechanism.
4. Axis 2 — composition mechanisms
Mechanism
Artifact
gen-sbom input
Rule
LIB
lib*.a or lib*.so
--lib
Hash the built library.
SRC
compiled .c/.S set
--srcs-file (gitoid)
Enumerate the real sources.
DEP
wrapper package plus declared dependency
--dep-wolfssl and an ecosystem tool
The ecosystem generator owns it.
* as-built
FIPS canister or .ko (plus in-core hash)
--lib on the as-built artifact
Hash as-built. Do not substitute sources.
5. Master grid
5.1 Reference (R)
Product
Front ends
Flavor
Config
Evidence
wolfSSL — library (autotools)
A ✅ZE ✅ESP ✅GEN ○VS ✅
LIB
options.h / user_settings
✔
wolfSSL — library (cmake)
C ✅
LIB
options.h / user_settings
✔
wolfSSL — IDE/ (58 trees)
IAR ▲CDB ▲RT ▲
SRC
per-tree user_settings
✔
wolfSSL — FIPS userspace (XCODE-FIPSv2/v5/v6, WIN-SRTP-KDF-140-3)
IAR ▲CDB ▲
LIB*
user_settings
✔
wolfSSL — kernel (linuxkm + bsdkm)
M ▲CDB ▲KB ▲
LIB* (.ko)
kernel .config → synth header
✔
The IDE/ count is 58 directories. The 59th entry, include.am, is a file, not
a tree.
5.2 Libraries (L)
Product
Front ends
Flavor
Config
Evidence
wolfSSH
A ✅C/ZE ✅M ○
LIB
wolfssh/options.h
✔
wolfProvider
A ✅ (autotools only)
LIB (dep wolfSSL + OpenSSL 3)
product-local
✔
wolfEngine
A ✅ (autotools only)
LIB (dep wolfSSL/OpenSSL)
include/config.h
✔
wolfCLU
A ✅
LIB (app; dep wolfSSL)
user_settings (winvs)
✔
wolfSCEP
A ✅ (autotools only)
LIB (dep wolfSSL)
product-local
✔
wolfTPM
A ✅C ✅ZE ✅ESP ✅
LIB
wolftpm user_settings
✔
wolfMQTT
A ✅C ✅ZE ✅ESP ✅GEN(Arduino) ○
LIB
wolfmqtt/options.h
✔
wolfPKCS11
A ▲C ▲
LIB (dep wolfSSL)
user_settings
✘ not in this tree
wolfHSM
M ✅ (core, host cc); ports ▢
SRC core (+LIB posix); ports SRC/declared only
wolfhsm/wh_settings.h
✔ (core=S / tests=E)
The wolfHSM vendor ports are restricted stubs. They have no public build files.
So you cannot run a compdb or IAR extractor on them. Only posix and skeleton
are first-class. The ports are infineon/tc3xx, renesas/rh850f1km,
stmicro/SR6, stmicro/spc58nn, microchip/pic32cz, and ti/tda4vh.
5.3 Small (S)
Product
Front ends
Flavor
Config
Evidence
wolfSentry
M ✅ (plain Make only; CMake in one example)
LIB
user_settings
✔
wolfIP
C ✅M ✅
LIB/SRC
config.h (stm32h5/rp2350)
✔
5.4 Embedded (E)
Product
Front ends
Flavor
Config
Evidence
wolfBoot
C ✅M ✅IAR ✅CDB ✅RT ✅ZE ✅ + Pico SDK, VS(keytools)
SRC
target .config
✔ — needs the arch.mk path-scrub
5.5 Kernel product (tier unset)
Product
Front ends
Flavor
Config
Evidence
wolfGuard
KB/DKMS ▲ + M (userspace CLI, mingw cross)
LIB* (links wolfSSL linuxkm)
kernel .config
✘ not in this tree — needs a tier and an owner
5.6 Bindings (B)
All bindings use the DEP flavor and the ECO front end.
Product
Build
Link mechanism → SBOM behavior
Evidence
wolfSSL JNI/JSSE
Ant + Maven + Make
links prebuilt libwolfssl → declared-dep
✘
wolfCrypt JNI/JCE
same repo
declared-dep
✘
wolfSSL Python
setuptools + cffi
builds wolfSSL from submodule → two-level SBOM possible (or USE_LOCAL_WOLFSSL)
✘
wolfCrypt Python
setuptools + cffi
links wolfSSL → declared-dep
✘
wolfCrypt rustls provider
cargo
-sys crate (bindgen), out-of-tree → declared-dep
✘
wolfSSL Go
go modules + cgo
links prebuilt (-lwolfssl) → declared-dep
✘
wolfSSL C#
MSBuild/.NET + native vcxproj
P/Invoke; native built separately → declared-dep
✔ (wolfssl/wrapper/CSharp)
5.7 Features
A feature ships inside wolfSSL. It has no standalone SBOM. It appears as a
component in the wolfSSL SBOM.
Product
Notes
Evidence
wolfCrypt
same source tree as wolfSSL
✔
SSL/TLS Sniffer
ships inside wolfSSL (sslSniffer.vcxproj)
✔ (wolfssl/sslSniffer)
wolfEntropy
via wolfCrypt (wolfcrypt/src/wolfentropy.c)
✔
wolfFE
to be defined; candidate; do not attest
✘
5.8 Kits
A Kit is a customer demo end-product. It uses a two-level composition SBOM.
Product
Front ends
Flavor
Evidence
CRA Kit (base)
C, user_settings
two-level composition
✔ (wolfssl-examples)
CRA Kit (cmake + embedded)
C, user_settings (+--srcs-file)
two-level composition
✔
6. SBOM attestation caveats
Obey these caveats when you attest support.
Do not attest Bazel or Meson. They are absent from wolfSSL 5.9.x.
TI is not first-class in libwolfSSL. There is no __TI_* macro and no CCS
project. TI is real in wolfBoot (armcl) and in the wolfHSM TDA4VH port stub.
Microchip is 16-bit and 32-bit only (XC32, XC16). There is no 8-bit PIC and no
SDCC.
The wolfHSM embedded toolchains (Aurix/HighTec, GHS/CC-RX, SPC5, CCS TI) live
in restricted vendor stubs. They are not in the public tree.
The __clang__ counts are inflated by auto-generated port asm, not by
Clang-only logic.
Scrub absolute host paths from captured macros. A path-valued define, for
example PICO_SDK_PATH from arch.mk, otherwise breaks byte-reproducibility
and leaks a local path into a shipped SBOM.
7. Evidence caveats about this matrix
The roster lists 28 products. This workspace holds a subset. These are not in
this workspace, so verify them at the source: wolfPKCS11, wolfGuard, all
bindings except C#, and wolfFE.
The roster version is wolfSSL 5.9.2. This workspace holds wolfssl and
wolfssl-5.9.1. Pin the exact tag that the SBOM claims.
8. Open decisions
Engine home. wolfGlass is canonical. wolfSSL is one more wolfglass-sync
target. wolfSSL keeps its own vendored copy. No product gains a build-time
dependency on wolfGlass. This keeps PLAN.md §10 ("no submodule, no network
pull"). It needs a named owner's sign-off.
wolfGuard tier. The tier is unset. Assign a tier and an owner.
share/ layout. The shared CMake fragment must be a function, not a
per-product target. See PLAN.md §12.
9. Dictionary
9.1 SBOM and CRA terms
Term
Meaning
SBOM
Software Bill of Materials. A machine-readable inventory of a build.
CRA
EU Cyber Resilience Act. The regulation that requires SBOMs.
CycloneDX 1.6
One SBOM format.
SPDX 2.3
One SBOM format.
gitoid
Git Object Identifier. A content hash for a source file.
two-level composition
An SBOM that nests the end product and its wolfSSL dependency.
declared-dep
The SBOM names wolfSSL as a dependency but does not rebuild it.
source-inventory
An SBOM that lists sources only, with no build config.
path scrub
Remove absolute host paths from captured macros for reproducibility.
CSAF
Common Security Advisory Framework 2.0 advisory.
VEX
Vulnerability Exploitability eXchange statement.
bomsh
The OmniBOR build-trace tool that adds provenance.
9.2 gen-sbom flags
Flag
Meaning
--options-h
Path to a flat #define header (config source).
--user-settings
Path to user_settings.h (config source).
--lib
Path to the built library to hash (composition).
--srcs-file
File that lists compiled sources, one per line (composition).
--dep-wolfssl
Declare wolfSSL as a dependency (bindings).
--no-artifact-hash
Do not recompute the artifact hash. For as-built FIPS/kernel output.
--source-only
Produce a source-inventory SBOM with no build config.
9.3 Build, link, and language terms
Term
Meaning
arch.mk
wolfBoot Make file that sets per-architecture CFLAGS, toolchain, and sources.
linuxkm
wolfSSL Linux kernel module front end. Output: libwolfssl.ko.
bsdkm
wolfSSL BSD kernel module front end.
autoconf.h
Header that the kernel build makes from .config.
DKMS
Dynamic Kernel Module Support. Rebuilds a module per kernel.
FIPS canister
The certified, integrity-hashed crypto object in a FIPS build.
in-core hash
Integrity hash computed at build time and stored inside the module.
host cc
The build machine's own C compiler, used for macro capture.
mingw
Minimalist GNU for Windows. A cross toolchain for Windows.
JNI
Java Native Interface. Lets Java call C.
JSSE
Java Secure Socket Extension. TLS provider for Java.
JCE
Java Cryptography Extension. Crypto provider for Java.
cffi
C Foreign Function Interface for Python.
cgo
The Go feature that calls C code.
-sys crate
A Rust crate that links a native C library.
bindgen
A tool that makes Rust bindings from C headers.
P/Invoke
Platform Invoke. Lets C# call a native DLL.
USE_LOCAL_WOLFSSL
Python build flag to link a prebuilt wolfSSL.
9.4 Toolchains and IDE codes
Term
Meaning
GHS
Green Hills Software (MULTI compiler).
CC-RX
Renesas C compiler for the RX core (__CCRX__).
armcl
Texas Instruments ARM compiler.
CCS
TI Code Composer Studio.
SPC5
STMicro SPC5 automotive MCU toolchain.
Aurix / HighTec
Infineon AURIX (TriCore) MCU and its HighTec GCC toolchain.
XC32 / XC16
Microchip 32-bit and 16-bit C compilers.
SDCC
Small Device C Compiler (8-bit). Not supported.
EWARM
IAR Embedded Workbench for ARM.
XCODE-FIPSv2/v5/v6
Apple Xcode project trees for FIPS validations.
WIN-SRTP-KDF-140-3
Windows FIPS 140-3 SRTP key-derivation validation tree.