Build PQC TLS job against upstream wolfSSL

pull/559/head
Aidan Garske 2026-07-29 12:41:35 -07:00
parent 74d9d63742
commit 558ed15889
2 changed files with 14 additions and 29 deletions

View File

@ -194,31 +194,15 @@ jobs:
with:
persist-credentials: false
# TODO(revert-when-merged): build wolfSSL from the aidangarske/wolfssl
# mldsa-signctx-cryptocb-devkey branch because the wc_MlDsaKey_SignCtx
# crypto-callback fix (device-key ML-DSA signing) is not yet upstream.
# Once that wolfSSL PR merges, switch this back to a wolfSSL/wolfssl tag
# (>= the release carrying the fix) and delete this note.
- name: Build wolfSSL (PQC TLS + crypto-cb ML-DSA device-key fix)
env:
# aidangarske/wolfssl mldsa-signctx-cryptocb-devkey
WOLFSSL_PQC_SHA: 6b0c832284286dbaec8e5ab35581ff470e90826b
run: |
cd ~
# pinned to an immutable commit: a mutable branch tip would let a
# force-push run unreviewed code inside this job
git clone --no-checkout https://github.com/aidangarske/wolfssl.git
cd wolfssl
git fetch --depth 1 origin "$WOLFSSL_PQC_SHA"
git checkout "$WOLFSSL_PQC_SHA"
./autogen.sh
./configure --enable-wolftpm --enable-pkcallbacks --enable-keygen \
--enable-certgen --enable-dilithium --enable-mlkem \
--enable-experimental --enable-tls-mlkem-standalone --enable-harden \
CPPFLAGS="-DWOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ -DWC_RSA_NO_PADDING" \
--prefix="$HOME/wolfssl-install"
make -j"$(nproc)"
make install
- name: Setup wolfSSL with PQC TLS
uses: ./.github/actions/setup-wolfssl
with:
configure-flags: >-
--enable-wolftpm --enable-pkcallbacks --enable-keygen
--enable-certgen --enable-dilithium --enable-mlkem
--enable-experimental --enable-tls-mlkem-standalone --enable-harden
cflags: -DWOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ -DWC_RSA_NO_PADDING
prefix: $HOME/wolfssl-install
- name: wolfSSL version info
run: grep LIBWOLFSSL_VERSION_STRING "$HOME/wolfssl-install/include/wolfssl/version.h"
@ -249,7 +233,7 @@ jobs:
export LD_LIBRARY_PATH="$HOME/wolfssl-install/lib"
# run_examples.sh pairs the classical TLS tests with the wolfSSL
# example client/server, so point it at the clone built above
export WOLFSSL_PATH="$HOME/wolfssl"
export WOLFSSL_PATH="$GITHUB_WORKSPACE/wolfssl"
./src/fwtpm/fwtpm_server >/tmp/fwtpm_tls.log 2>&1 &
echo $! > /tmp/fwtpm_tls.pid
sleep 2

View File

@ -189,9 +189,10 @@ TPM. The server signs the CertificateVerify on-chip via the wolfTPM crypto
callback; the client performs an ML-KEM key exchange and validates the server
against a software CA.
Requires wolfSSL with a fix that routes `wc_MlDsaKey_SignCtx` to the crypto
callback for device keys (private key in the TPM). No shipping TPM implements
TCG v1.85 PQC yet, so this runs against the in-tree fwTPM.
Requires a wolfSSL that routes `wc_MlDsaKey_SignCtx` to the crypto callback for
device keys (private key in the TPM). That landed upstream, so master or any
later release works. No shipping TPM implements TCG v1.85 PQC yet, so this runs
against the in-tree fwTPM.
Demo scope: the identity key is an unauthenticated deterministic TPM primary
(empty auth), reproducible by both `gen_pqc_certs` and the server from the owner