wolfssl/.github/workflows
Daniele Lacamera 156b7db33c tests: check API availability guards before the build does
tests/api is one binary compiled in every CI configuration, so a test calling
an API the build did not compile is not a test failure -- it is a link error
that takes the whole binary down. It is also invisible to header inspection,
because wolfSSL declares plenty of API unconditionally and implements it under
a narrower condition. That combination broke CI four separate times on this
branch, each time found by CI rather than locally, and each time the fix was
the same: name what the build provides, not what the test needs.

check-api-guards.py walks the enclosing #if chain of every call site and
requires the macros the IMPLEMENTATION carries. It is a whitelist rather than
a parse of ssl.h on purpose: the mapping from symbol to implementation guard
cannot be derived from the declaration, which is the whole problem.

Two things make it usable rather than noisy:

  It only looks at call sites this branch changed. Run over everything it
  reports 28 long-standing sites that are fine in practice because the
  configurations that would break them are not built; auditing those is a
  different job, and --all still does it.

  It knows which macros imply TLS. A block under WOLFSSL_TLS13 or HAVE_SNI
  cannot also need !defined(NO_TLS) spelled out, and comments and string
  literals are blanked before matching, since these files discuss the very
  API names being searched for.

It refuses to run against a ref it cannot resolve rather than reporting
success, because a shallow checkout would otherwise make every diff empty and
the check would pass without looking at anything. The workflow checks out with
fetch-depth: 0 for that reason, and runs the check before the smoke build --
it needs no build and costs a second.

Verified both directions: clean on this branch, and it reports the exact site
when !defined(NO_TLS) is removed from a guard that needs it.
2026-09-14 17:44:45 +02:00
..
cross-library Add workflows to check other wolfSSL products still build 2026-07-08 16:39:00 -06:00
disabled .github: bump JavaScript actions to Node.js 24 runtimes 2026-06-15 18:09:04 +00:00
hostap-files Remove ap_wpa2_eap_sim_sql 2026-04-24 17:07:37 +02:00
ada.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
advisory.yml sbom: address advisory/SBOM review findings 2026-07-23 21:51:26 -07:00
aesgcm-siv.yml AES asm: Add GCM 8-bit table, fixes 2026-08-04 17:48:14 +10:00
afalg.yml add github actions CI test for AF-ALG 2026-08-21 11:20:13 -06:00
arduino-cores-image.yml CI: move Arduino cores from actions/cache to ghcr bundles 2026-06-17 09:29:48 +00:00
arduino.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
async-examples.yml Merge pull request #10990 from julek-wolfssl/cryptocb-async-poll-compile-time 2026-08-17 11:44:31 -06:00
async.yml Add TLS 1.3 crypto callback pend tests and byte-stream test memio 2026-09-09 16:03:38 -07:00
atecc608-sim.yml CI: offload ccache/apt/buildx caches off the GitHub Actions cache 2026-06-15 22:36:35 +00:00
bind.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
check-cert-chains.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
check-headers.yml CI: offload ccache/apt/buildx caches off the GitHub Actions cache 2026-06-15 22:36:35 +00:00
check-source-text.yml Address review: budget the apt loop and keep DEBIAN_FRONTEND across sudo 2026-08-21 02:48:32 +00:00
ci-deps-image.yml CI: key the linuxkm bundle rebuild on the package set, not just the kernel 2026-08-24 12:12:01 +00:00
cmake-autoconf.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cmake.yml Merge pull request #10827 from danielinux/falcon-native 2026-07-23 21:17:10 +10:00
codespell.yml .github/workflows/codespell.yml: add *.bin to skip list. 2026-08-05 13:53:46 -05:00
coverity-scan-fixes.yml .github: bump JavaScript actions to Node.js 24 runtimes 2026-06-15 18:09:04 +00:00
cross-library.yml CI: recover an interrupted dpkg in the open-coded apt retry loops 2026-08-24 12:11:46 +00:00
cross-wolfclu.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cross-wolfmqtt.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cross-wolfpkcs11.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cross-wolfprovider.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cross-wolfssh.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cross-wolftpm.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cryptocb-only.yml Add crypto callback mode for SLH-DSA 2026-09-08 13:52:19 -07:00
curl.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
cyrus-sasl.yml Address review: budget the apt loop and keep DEBIAN_FRONTEND across sudo 2026-08-21 02:48:32 +00:00
disable-pk-algs.yml Add crypto callback mode for SLH-DSA 2026-09-08 13:52:19 -07:00
docker-Espressif.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
docker-OpenWrt.yml CI: offload ccache/apt/buildx caches off the GitHub Actions cache 2026-06-15 22:36:35 +00:00
emnet-nonblock.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
falcon-interop.yml CI: recover an interrupted dpkg in the open-coded apt retry loops 2026-08-24 12:11:46 +00:00
fil-c.yml Extend the Fil-C job and fix what it found 2026-09-01 09:23:05 +02:00
fips-dev-no-post.yml Fix CI flakes from ccache saturation and stale schedule estimates 2026-08-06 18:56:15 +02:00
freertos-mem-track.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
gencertbuf.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
grpc.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
haproxy.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
hostap-vm.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
intelasm-c-fallback.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
ipmitool.yml CI: drop the apt budget overrides from three jobs with no timeout-minutes 2026-08-24 12:11:46 +00:00
jwt-cpp.yml CI: drop the apt budget overrides from three jobs with no timeout-minutes 2026-08-24 12:11:46 +00:00
krb5.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
libspdm.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
libssh2.yml Fix the libssh2 test retry, which never actually ran 2026-08-31 12:01:29 +02:00
libvncserver.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
linuxkm.yml Address review: budget the apt loop and keep DEBIAN_FRONTEND across sudo 2026-08-21 02:48:32 +00:00
mbedtls.sh
mbedtls.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
membrowse-comment.yml skip membrowse comment action on draft PRs 2026-06-13 11:59:58 +01:00
membrowse-onboard.yml CI: install all apt deps from ghcr bundles 2026-06-16 15:22:36 +00:00
membrowse-report.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
membrowse-zephyr.yml Fix membrowse workflow on forks 2026-08-14 13:19:13 -07:00
memcached.sh
memcached.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
mono.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
mosquitto.yml Address review: budget the apt loop and keep DEBIAN_FRONTEND across sudo 2026-08-21 02:48:32 +00:00
msmtp.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
msys2.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
multi-arch.yml SP RISC-V 64-bit: new implementation 2026-08-14 11:05:08 +10:00
multi-compiler.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
net-snmp.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
nginx.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
no-malloc.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
nss.sh
nss.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
ntp.yml ntp CI: build wolfSSL with OPENSSL_EXTRA_BSD and MD4 2026-08-19 11:15:42 +00:00
ocsp.yml Make OCSP stapling request ownership explicit 2026-07-31 22:02:42 +02:00
openldap.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
openssh.yml ci: add OpenSSH 10.4p1 to CI matrix 2026-08-17 03:16:35 +00:00
openssl-ech.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
opensslcoexist.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
openvpn.yml Merge pull request #10896 from julek-wolfssl/julek-dev/openvpn-set0-crls 2026-07-24 10:18:40 +10:00
os-check.yml Add a 32-bit NO_64BIT key wrap build to the os-check matrix 2026-08-10 15:10:46 -06:00
packaging.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
pam-ipmi.yml CI: drop the apt budget overrides from three jobs with no timeout-minutes 2026-08-24 12:11:46 +00:00
pic32mz-sim.yml CI: run PIC32MZ simulator test on ready_for_review 2026-06-18 14:21:35 +00:00
pq-all.yml pq-all: split into three shards and recalibrate the schedule 2026-09-07 13:57:40 -07:00
pr-commit-check.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
psk.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
puf.yml wolfCrypt SRAM PUF: health test the raw readout before accepting it 2026-08-19 01:02:19 +02:00
python.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
retrigger-prb-on-ready.yml .github: bump JavaScript actions to Node.js 24 runtimes 2026-06-15 18:09:04 +00:00
rng-tools.yml Address review: budget the apt loop and keep DEBIAN_FRONTEND across sudo 2026-08-21 02:48:32 +00:00
rtl8735b.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
rust-wrapper.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
sbom.yml CI: recover an interrupted dpkg in the open-coded apt retry loops 2026-08-24 12:11:46 +00:00
se050-sim.yml SE050 CI: update pinned simulator for PKCS7 coverage 2026-08-18 15:09:00 +01:00
smallStackSize.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
smoke-test.yml CI: move parallel-make-check config lists into .github/configs 2026-08-03 17:05:29 +02:00
socat.yml Merge pull request #10931 from julek-wolfssl/socat-ci-hang-fix 2026-07-24 10:45:20 +10:00
softhsm.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
sssd.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
stm32-sim.yml CI: offload ccache/apt/buildx caches off the GitHub Actions cache 2026-06-15 22:36:35 +00:00
stsafe-a120-sim.yml CI: pin STSAFE-A120 simulators ref to the merged F-11238 test 2026-08-26 10:49:03 +02:00
stunnel.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
symbol-prefixes.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
threadx.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
ti-c2000-compile.yml Add CHAR_BIT != 8 octet boundary helpers and fix the C28x SP regression 2026-09-08 16:29:14 -07:00
tinytls13.yml Move tinytls13 smoke test to examples/tls13/tls13_memio.c and restore WOLFSSL_MLKEM_DYNAMIC_KEYS macro 2026-06-25 14:32:33 -07:00
tls-anvil.yml CI: offload ccache/apt/buildx caches off the GitHub Actions cache 2026-06-15 22:36:35 +00:00
trackmemory.yml Fix CI flakes from ccache saturation and stale schedule estimates 2026-08-06 18:56:15 +02:00
tropic01-sim.yml TROPIC01: address review comments on the callback KATs 2026-09-04 15:17:00 +02:00
watcomc.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
whitebox-smoke.yml tests: check API availability guards before the build does 2026-09-14 17:44:45 +02:00
win-csharp-test.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
windows-arm64.yml Merge pull request #10947 from night1rider/benchmark-msvc-arm64 2026-07-31 14:23:26 -07:00
wolfCrypt-Wconversion.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
wolfboot-integration.yml CI: assert test-lib exit status in the wolfBoot host-smoke job 2026-08-26 07:55:01 +02:00
wolfsm.yml Address code review feedback. 2026-08-07 13:57:12 -07:00
workflow-health.yml CI: catch workflows that GitHub silently fails to load 2026-08-03 17:05:29 +02:00
xcode.yml 6707 - Add least-privilege permissions block to PR-triggered workflows 2026-07-16 09:39:57 -07:00
zephyr-4.x.yml Zephyr: wolfSSL module support for the wolfPSA provider and native RTOS use 2026-08-04 20:53:36 +02:00
zephyr.yml Zephyr: wolfSSL module support for the wolfPSA provider and native RTOS use 2026-08-04 20:53:36 +02:00