Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
check_filenames: true
check_hidden: true
# Add comma separated list of words that occur multiple times that should be ignored (sorted alphabetically, case sensitive)
ignore_words_list: adin,aNULL,brunch,carryIn,chainG,ciph,cLen,cliKs,dout,haveA,inCreated,inOut,inout,larg,LEAPYEAR,Merget,optionA,parm,parms,repid,rIn,userA,ser,siz,te,Te,HSI,failT,toLen,
ignore_words_list: adin,ameba,aNULL,brunch,carryIn,chainG,ciph,cLen,cliKs,dout,haveA,inCreated,inOut,inout,larg,LEAPYEAR,Merget,optionA,parm,parms,repid,rIn,userA,ser,siz,te,Te,HSI,failT,toLen,
# The exclude_file contains lines of code that should be ignored. This is useful for individual lines which have non-words that can safely be ignored.
exclude_file: '.codespellexcludelines'
# To skip files entirely from being processed, add it to the following list:
Expand Down
96 changes: 96 additions & 0 deletions .github/workflows/rtl8735b.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: RealTek RTL8735B (AmebaPro2) HUK port Tests

# START OF COMMON SECTION
on:
push:
branches: [ 'release/**' ]
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches: [ '*' ]
# Weekday-morning cron seeds the master-scoped ccache that PR runs restore
# read-only (see ccache-setup).
schedule:
- cron: '27 10 * * 1-5'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION

jobs:
# Compile + helper-KAT gate for the RTL8735B HUK crypto-callback port.
# --enable-rtl8735b sets WOLFSSL_RTL8735B_HOST_TEST, which swaps the vendor HAL
# headers for rtl8735b_shim.h (sentinel stubs, no real crypto). Two levels:
# (1) build-only matrix -- exercises crypto-callback dispatch, info-struct
# field access, compile guards, and build wiring across algo/guard combos
# and both WOLFSSL_SMALL_STACK branches, via parallel-make-check.py.
# (2) one config runs testwolfcrypt, which calls wc_Rtl8735b_HukSelfTest() --
# real KATs of the silicon-independent helpers (BE/LE word conversion, CTR
# counter increment, HMAC accumulator growth/overflow/cap, bounce
# alignment). No fake-crypto shim path is asserted as "correct".
# Functional crypto correctness (AES/GCM/ECDSA on silicon) is validated on
# RTL8735B hardware, NOT here (see the port README).
build:
name: build + helper KATs (--enable-rtl8735b)
if: ${{ (github.repository_owner == 'wolfssl') && (github.event_name != 'pull_request' || github.event.pull_request.draft == false) }}
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v5
name: Checkout wolfSSL

- name: Install dependencies
uses: ./.github/actions/install-apt-deps
with:
packages: autoconf automake libtool build-essential
ghcr-debs-tag: ubuntu-24.04-minimal

- name: Set up ccache
uses: ./.github/actions/ccache-setup
with:
workflow-id: rtl8735b
read-only: ${{ github.event_name == 'pull_request' }}
max-size: 100M

- name: Build all configs (compile-only, out-of-tree)
run: |
cat > "$RUNNER_TEMP/rtl8735b-configs.json" <<'EOF'
[
{"name": "full-smallstack", "minutes": 2,
"comment": "All port paths (AES-GCM/ECB/CBC/CTR, HMAC-SHA256, ECDSA P-256) with WOLFSSL_SMALL_STACK -> exercises the heap branch of the HW-ECDSA mp_int helpers.",
"configure": ["--enable-rtl8735b", "--enable-cryptocb", "--enable-ecc",
"--enable-aesgcm", "--enable-aesctr", "--enable-aescbc",
"CPPFLAGS=-DWOLFSSL_SMALL_STACK"]},
{"name": "full", "minutes": 2,
"comment": "Same algo coverage without WOLFSSL_SMALL_STACK -> exercises the on-stack (array) branch of the HW-ECDSA mp_int helpers.",
"configure": ["--enable-rtl8735b", "--enable-cryptocb", "--enable-ecc",
"--enable-aesgcm", "--enable-aesctr", "--enable-aescbc"]},
{"name": "min", "minutes": 2,
"comment": "Minimal: no ECC (HW/SW ECDSA sign code compiled out), AES + HMAC only -> exercises the non-ECC compile guards.",
"configure": ["--enable-rtl8735b", "--enable-cryptocb"]}
]
EOF
.github/scripts/parallel-make-check.py --build-only \
"$RUNNER_TEMP/rtl8735b-configs.json"

- name: Run helper KATs on host (testwolfcrypt self-test)
run: |
./autogen.sh
./configure --enable-rtl8735b --enable-cryptocb --enable-ecc \
--enable-aesgcm --enable-aesctr --enable-aescbc
make -j"$(nproc)"
./wolfcrypt/test/testwolfcrypt

- name: ccache stats
if: always()
run: ccache -s || true

- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v6
with:
retention-days: 7
name: rtl8735b-logs
path: |
build-*/config.log
if-no-files-found: ignore
1 change: 1 addition & 0 deletions .wolfssl_known_macro_extras
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,7 @@ WC_RNG_BANK_NO_DEFAULT_SUPPORT
WC_RNG_BLOCKING
WC_RSA_NONBLOCK_TIME
WC_RSA_NO_FERMAT_CHECK
WC_RTL8735B_NO_DERIVE_CACHE
WC_RWLOCK_OPS_INLINE
WC_SHE_SW_DEFAULT
WC_SKIP_INCLUDED_C_FILES
Expand Down
30 changes: 29 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -3347,6 +3347,32 @@ case "$ENABLED_STSAFE" in
esac


# RealTek AmebaPro2 (RTL8735B) HUK crypto-callback port.
# On-target the application supplies the AmebaPro2 HAL include path. This option
# is a host compile-test of the port: it swaps the HAL headers for a shim
# (WOLFSSL_RTL8735B_HOST_TEST) so the cryptocb dispatch and wiring build without
# the vendor SDK. It forces crypto callbacks on (see the cryptocb block).
# Example: "./configure --enable-rtl8735b"
ENABLED_RTL8735B="no"
AC_ARG_ENABLE([rtl8735b],
[AS_HELP_STRING([--enable-rtl8735b],
[Enable RealTek AmebaPro2 (RTL8735B) HUK crypto-callback port (host compile-test).])],
Comment thread
dgarske marked this conversation as resolved.
[ ENABLED_RTL8735B=$enableval ],
[ ENABLED_RTL8735B=no ])
Comment thread
dgarske marked this conversation as resolved.

Comment thread
dgarske marked this conversation as resolved.
if test "x$ENABLED_RTL8735B" != "xno"
then
# HAVE_AES_ECB is required: the port chains AES-CBC/CTR over single-block
# secure-key ECB ops, so enabling the port implies AES-ECB for the build.
# NOTE: this enables the (public, unauthenticated) AES-ECB API build-wide,
# not just for the port -- a deliberate, documented side effect.
AC_MSG_NOTICE([--enable-rtl8735b also enables AES-ECB build-wide (HAVE_AES_ECB)])
# WOLF_CRYPTO_CB_COPY/FREE: the HUK HMAC hangs its accumulation buffer on the
# inner SHA-256 devCtx and relies on the cryptocb copy/free ops (see the port).
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_RTL8735B_HUK -DWOLFSSL_RTL8735B_HOST_TEST -DHAVE_AES_ECB -DWOLF_CRYPTO_CB_COPY -DWOLF_CRYPTO_CB_FREE"
fi
Comment thread
dgarske marked this conversation as resolved.


# NXP SE050
# Example: "./configure --with-se050=/home/pi/simw_top"
ENABLED_SE050="no"
Expand Down Expand Up @@ -10899,7 +10925,7 @@ AC_ARG_ENABLE([cryptocb-sw-test],
[ ENABLED_CRYPTOCB_SW_TEST=yes ]
)

if test "x$ENABLED_PKCS11" = "xyes" || test "x$ENABLED_WOLFTPM" = "xyes" || test "$ENABLED_CAAM" != "no"
if test "x$ENABLED_PKCS11" = "xyes" || test "x$ENABLED_WOLFTPM" = "xyes" || test "$ENABLED_CAAM" != "no" || test "x$ENABLED_RTL8735B" != "xno"
then
ENABLED_CRYPTOCB=yes
fi
Expand Down Expand Up @@ -12676,6 +12702,7 @@ AM_CONDITIONAL([BUILD_IOTSAFE],[test "x$ENABLED_IOTSAFE" = "xyes"])
AM_CONDITIONAL([BUILD_IOTSAFE_HWRNG],[test "x$ENABLED_IOTSAFE_HWRNG" = "xyes"])
AM_CONDITIONAL([BUILD_SE050],[test "x$ENABLED_SE050" = "xyes"])
AM_CONDITIONAL([BUILD_STSAFE],[test "x$ENABLED_STSAFE" != "xno"])
AM_CONDITIONAL([BUILD_RTL8735B],[test "x$ENABLED_RTL8735B" != "xno"])
AM_CONDITIONAL([BUILD_TROPIC01],[test "x$ENABLED_TROPIC01" = "xyes"])
AM_CONDITIONAL([BUILD_KDF],[test "x$ENABLED_KDF" = "xyes"])
AM_CONDITIONAL([BUILD_HMAC],[test "x$ENABLED_HMAC" = "xyes"])
Expand Down Expand Up @@ -13271,6 +13298,7 @@ echo " * IoT-Safe: $ENABLED_IOTSAFE"
echo " * IoT-Safe HWRNG: $ENABLED_IOTSAFE_HWRNG"
echo " * NXP SE050: $ENABLED_SE050"
echo " * STMicro STSAFE: $ENABLED_STSAFE"
echo " * RealTek RTL8735B HUK: $ENABLED_RTL8735B"
echo " * TROPIC01: $ENABLED_TROPIC01"
echo " * Maxim Integrated MAXQ10XX: $ENABLED_MAXQ10XX"
echo " * PSA: $ENABLED_PSA"
Expand Down
7 changes: 7 additions & 0 deletions wolfcrypt/src/include.am
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ EXTRA_DIST += wolfcrypt/src/port/ti/ti-aes.c \
wolfcrypt/src/port/st/README.md \
wolfcrypt/src/port/st/STM32MP13.md \
wolfcrypt/src/port/st/STM32MP25.md \
wolfcrypt/src/port/realtek/rtl8735b.c \
wolfcrypt/src/port/realtek/rtl8735b_shim.h \
wolfcrypt/src/port/realtek/README.md \
wolfcrypt/src/port/tropicsquare/tropic01.c \
wolfcrypt/src/port/tropicsquare/README.md \
wolfcrypt/src/port/af_alg/afalg_aes.c \
Expand Down Expand Up @@ -261,6 +264,10 @@ if BUILD_TROPIC01
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/tropicsquare/tropic01.c
endif

if BUILD_RTL8735B
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/realtek/rtl8735b.c
endif

if BUILD_PSA
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/psa/psa.c
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/psa/psa_hash.c
Expand Down
Loading
Loading