Skip to content

Commit 1eeae37

Browse files
committed
Increase test coverage
* More PQC configurations * More CMake setups Added some missing feature additions to CMake to make the example `user_settings_all.` config file work for the CI test.
1 parent 819eab8 commit 1eeae37

7 files changed

Lines changed: 108 additions & 21 deletions

File tree

.github/workflows/cmake.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ jobs:
7878
-DWOLFSSL_TLSX:BOOL=yes -DWOLFSSL_TPM:BOOL=yes -DWOLFSSL_CLU:BOOL=yes -DWOLFSSL_USER_SETTINGS:BOOL=no \
7979
-DWOLFSSL_USER_SETTINGS_ASM:BOOL=no -DWOLFSSL_WOLFSSH:BOOL=ON -DWOLFSSL_X86_64_BUILD_ASM:BOOL=yes \
8080
-DWOLFSSL_MLKEM=1 -DWOLFSSL_LMS=1 -DWOLFSSL_LMSSHA256192=1 -DWOLFSSL_EXPERIMENTAL=1 \
81-
-DWOLFSSL_X963KDF:BOOL=yes \
81+
-DWOLFSSL_X963KDF:BOOL=yes -DWOLFSSL_DILITHIUM:BOOL=yes -DWOLFSSL_PKCS11:BOOL=yes \
82+
-DWOLFSSL_ECCSI:BOOL=yes -DWOLFSSL_SAKKE:BOOL=yes -DWOLFSSL_SIPHASH:BOOL=yes \
8283
-DCMAKE_C_FLAGS="-DWOLFSSL_DTLS_CH_FRAG" \
8384
..
8485
cmake --build .
@@ -89,9 +90,6 @@ jobs:
8990
cd ..
9091
rm -rf build
9192
92-
# Kyber Cmake broken
93-
# -DWOLFSSL_KYBER:BOOL=yes
94-
9593
# build "lean-tls" wolfssl
9694
- name: Build wolfssl with lean-tls
9795
working-directory: ./wolfssl
@@ -107,3 +105,23 @@ jobs:
107105
# clean up
108106
cd ..
109107
rm -rf build
108+
109+
# CMake build with user_settings.h
110+
- name: Build wolfssl with user_settings.h
111+
working-directory: ./wolfssl
112+
run: |
113+
mkdir build
114+
cp examples/configs/user_settings_all.h ./build/user_settings.h
115+
cd build
116+
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \
117+
-DWOLFSSL_USER_SETTINGS=ON -DWOLFSSL_USER_SETTINGS_ASM=ON -DWOLFSSL_EXAMPLES=ON -DWOLFSSL_CRYPT_TESTS=ON \
118+
-DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -I ." \
119+
..
120+
cmake --build .
121+
ctest -j $(nproc)
122+
cmake --install .
123+
124+
# clean up
125+
cd ..
126+
rm -rf build
127+
rm user_settings.h

.github/workflows/pq-all.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@ jobs:
1919
config: [
2020
# Add new configs here
2121
'--enable-intelasm --enable-sp-asm --enable-mlkem=yes,kyber,ml-kem CPPFLAGS="-DWOLFSSL_ML_KEM_USE_OLD_IDS"',
22-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
23-
'--enable-smallstack --enable-smallstackcache --enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
24-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-kyber=yes,original --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" CC=c++'
22+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
23+
'--enable-smallstack --enable-smallstackcache --enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
24+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" CC=c++',
25+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_BLIND_PRIVATE_KEY"',
26+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ"',
27+
'--disable-intelasm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
28+
'--disable-intelasm --enable-smallstack --enable-smallstackcache --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
2529
]
2630
name: make check
2731
if: github.repository_owner == 'wolfssl'

CMakeLists.txt

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -711,11 +711,18 @@ if (WOLFSSL_EXPERIMENTAL)
711711
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
712712

713713
message(STATUS "Automatically set related requirements for Dilithium:")
714-
set_wolfssl_definitions("HAVE_DILITHIUM" RESUlT)
715-
set_wolfssl_definitions("WOLFSSL_WC_DILITHIUM" RESUlT)
716-
set_wolfssl_definitions("WOLFSSL_SHA3" RESUlT)
717-
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESUlT)
718-
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESUlT)
714+
add_definitions("-DHAVE_DILITHIUM")
715+
add_definitions("-DWOLFSSL_WC_DILITHIUM")
716+
add_definitions("-DWOLFSSL_SHA3")
717+
add_definitions("-DWOLFSSL_SHAKE128")
718+
add_definitions("-DWOLFSSL_SHAKE256")
719+
720+
message(STATUS "Automatically set related requirements for Dilithium:")
721+
set_wolfssl_definitions("HAVE_DILITHIUM" RESULT)
722+
set_wolfssl_definitions("WOLFSSL_WC_DILITHIUM" RESULT)
723+
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
724+
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
725+
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
719726
message(STATUS "Looking for WOLFSSL_DILITHIUM - found")
720727
else()
721728
message(STATUS "Looking for WOLFSSL_DILITHIUM - not found")
@@ -1063,6 +1070,41 @@ if(WOLFSSL_ECC)
10631070
endif()
10641071
endif()
10651072

1073+
# ECCSI
1074+
add_option("WOLFSSL_ECCSI"
1075+
"Enable ECCSI (default: disabled)"
1076+
"no" "yes;no")
1077+
1078+
if(WOLFSSL_ECCSI)
1079+
if (NOT WOLFSSL_ECC)
1080+
message(FATAL_ERROR "cannot enable ECCSI without enabling ECC.")
1081+
endif()
1082+
1083+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFCRYPT_HAVE_ECCSI -DWOLFSSL_PUBLIC_MP")
1084+
endif()
1085+
1086+
# SAKKE
1087+
add_option("WOLFSSL_SAKKE"
1088+
"Enable SAKKE (default: disabled)"
1089+
"no" "yes;no")
1090+
1091+
if(WOLFSSL_SAKKE)
1092+
if (NOT WOLFSSL_ECC)
1093+
message(FATAL_ERROR "cannot enable SAKKE without enabling ECC.")
1094+
endif()
1095+
1096+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFCRYPT_HAVE_SAKKE")
1097+
endif()
1098+
1099+
# SipHash
1100+
add_option("WOLFSSL_SIPHASH"
1101+
"Enable SipHash (default: disabled)"
1102+
"no" "yes;no")
1103+
1104+
if(WOLFSSL_SIPHASH)
1105+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SIPHASH")
1106+
endif()
1107+
10661108
# TODO: - Compressed key
10671109
# - FP ECC, fixed point cache ECC
10681110
# - ECC encrypt
@@ -1898,6 +1940,7 @@ add_option("WOLFSSL_PKCS11"
18981940
"no" "yes;no")
18991941

19001942
if(WOLFSSL_PKCS11 AND NOT WIN32)
1943+
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_PKCS11 -DHAVE_WOLF_BIGINT")
19011944
list(APPEND WOLFSSL_LINK_LIBS ${CMAKE_DL_LIBS})
19021945
endif()
19031946

cmake/functions.cmake

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,15 @@ function(generate_build_flags)
108108
if(WOLFSSL_ECC OR WOLFSSL_USER_SETTINGS)
109109
set(BUILD_ECC "yes" PARENT_SCOPE)
110110
endif()
111+
if(WOLFSSL_ECCSI OR WOLFSSL_USER_SETTINGS)
112+
set(BUILD_ECCSI "yes" PARENT_SCOPE)
113+
endif()
114+
if(WOLFSSL_SAKKE OR WOLFSSL_USER_SETTINGS)
115+
set(BUILD_SAKKE "yes" PARENT_SCOPE)
116+
endif()
117+
if(WOLFSSL_SIPHASH OR WOLFSSL_USER_SETTINGS)
118+
set(BUILD_SIPHASH "yes" PARENT_SCOPE)
119+
endif()
111120
if(WOLFSSL_ED25519 OR WOLFSSL_USER_SETTINGS)
112121
set(BUILD_ED25519 "yes" PARENT_SCOPE)
113122
endif()
@@ -914,6 +923,18 @@ function(generate_lib_src_list LIB_SOURCES)
914923
list(APPEND LIB_SOURCES wolfcrypt/src/ecc.c)
915924
endif()
916925

926+
if(BUILD_ECCSI)
927+
list(APPEND LIB_SOURCES wolfcrypt/src/eccsi.c)
928+
endif()
929+
930+
if(BUILD_SAKKE)
931+
list(APPEND LIB_SOURCES wolfcrypt/src/sakke.c)
932+
endif()
933+
934+
if(BUILD_SIPHASH)
935+
list(APPEND LIB_SOURCES wolfcrypt/src/siphash.c)
936+
endif()
937+
917938
if(BUILD_CURVE25519)
918939
list(APPEND LIB_SOURCES wolfcrypt/src/curve25519.c)
919940
if(BUILD_ARMASM)
@@ -942,21 +963,17 @@ function(generate_lib_src_list LIB_SOURCES)
942963
endif()
943964

944965
if(BUILD_FEMATH)
945-
if(BUILD_CURVE25519_SMALL)
946966
list(APPEND LIB_SOURCES wolfcrypt/src/fe_low_mem.c)
947-
else()
967+
948968
if(BUILD_INTELASM)
949969
list(APPEND LIB_SOURCES wolfcrypt/src/fe_x25519_asm.S)
950970
else()
951971
list(APPEND LIB_SOURCES wolfcrypt/src/fe_operations.c)
952972
endif()
953-
endif()
954973
endif()
955974

956975
if(BUILD_GEMATH)
957-
if(BUILD_ED25519_SMALL)
958976
list(APPEND LIB_SOURCES wolfcrypt/src/ge_low_mem.c)
959-
else()
960977
list(APPEND LIB_SOURCES wolfcrypt/src/ge_operations.c)
961978

962979
if(NOT BUILD_FEMATH)
@@ -966,7 +983,6 @@ function(generate_lib_src_list LIB_SOURCES)
966983
list(APPEND LIB_SOURCES wolfcrypt/src/fe_operations.c)
967984
endif()
968985
endif()
969-
endif()
970986
endif()
971987

972988
if(BUILD_CURVE448)

examples/configs/user_settings_all.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,9 @@ extern "C" {
216216
#define HAVE_HASHDRBG
217217
#define HAVE_CURVE25519
218218
#define HAVE_ED25519
219+
#define ED25519_SMALL
219220
#define WOLFSSL_ED25519_STREAMING_VERIFY
220-
#define CURVED25519_SMALL
221+
#define CURVE25519_SMALL
221222
#define HAVE_ED448
222223
#define WOLFSSL_ED448_STREAMING_VERIFY
223224
#define HAVE_CURVE448

wolfcrypt/src/dilithium.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8788,9 +8788,9 @@ static int dilithium_sign_with_seed_mu(dilithium_key* key,
87888788
const byte* s2pt = s2p;
87898789
#endif
87908790
sword32* cs2 = ct0;
8791+
byte idx = 0;
87918792
w0t = w0;
87928793
w1t = w1;
8793-
byte idx = 0;
87948794

87958795
for (r = 0; valid && (r < params->k); r++) {
87968796
#ifndef WOLFSSL_DILITHIUM_SIGN_SMALL_MEM_PRECALC

wolfcrypt/src/wc_lms_impl.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3185,9 +3185,14 @@ int wc_hss_reload_key(LmsState* state, const byte* priv_raw,
31853185
(void)pub_root;
31863186

31873187
/* Defend against undefined shifts; LmsParams* params = state->params */
3188-
if ((state->params->cacheBits >= 32U) || (state->params->height >= 32U)) {
3188+
if (state->params->height >= 32U) {
31893189
return BAD_FUNC_ARG;
31903190
}
3191+
#ifndef WOLFSSL_WC_LMS_SMALL
3192+
if (state->params->cacheBits >= 32U) {
3193+
return BAD_FUNC_ARG;
3194+
}
3195+
#endif
31913196

31923197
wc_hss_priv_data_load(state->params, priv_key, priv_data);
31933198
#ifndef WOLFSSL_WC_LMS_SMALL

0 commit comments

Comments
 (0)