Skip to content

Commit bccc6db

Browse files
committed
Increase test coverage
* More PQC configurations * More CMake setups * Fix various bugs uncovered by these tests 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 bccc6db

9 files changed

Lines changed: 172 additions & 53 deletions

File tree

.github/workflows/cmake.yml

Lines changed: 21 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,22 @@ 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

.github/workflows/pq-all.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@ 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 --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_BLIND_PRIVATE_KEY"',
27+
'--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"',
28+
'--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"',
29+
'--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"',
2530
]
2631
name: make check
2732
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

src/internal.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7124,6 +7124,7 @@ int SetSSL_CTX(WOLFSSL* ssl, WOLFSSL_CTX* ctx, int writeDup)
71247124
if (ret != 0) {
71257125
return ret;
71267126
}
7127+
ret = WOLFSSL_SUCCESS;
71277128
}
71287129
#endif
71297130
ssl->buffers.keyType = ctx->privateKeyType;

src/ssl.c

Lines changed: 63 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7519,11 +7519,19 @@ int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX* ctx)
75197519
#ifdef WOLFSSL_DUAL_ALG_CERTS
75207520
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
75217521
privateKey = wolfssl_priv_der_unblind(ctx->privateKey, ctx->privateKeyMask);
7522-
altPrivateKey = wolfssl_priv_der_unblind(ctx->altPrivateKey,
7523-
ctx->altPrivateKeyMask);
7524-
if ((privateKey == NULL) || (altPrivateKey == NULL)) {
7522+
if (privateKey == NULL) {
75257523
res = WOLFSSL_FAILURE;
75267524
}
7525+
if (ctx->altPrivateKey != NULL) {
7526+
altPrivateKey = wolfssl_priv_der_unblind(ctx->altPrivateKey,
7527+
ctx->altPrivateKeyMask);
7528+
if (altPrivateKey == NULL) {
7529+
res = WOLFSSL_FAILURE;
7530+
}
7531+
}
7532+
else {
7533+
altPrivateKey = NULL;
7534+
}
75277535
#else
75287536
privateKey = ctx->privateKey;
75297537
altPrivateKey = ctx->altPrivateKey;
@@ -8866,47 +8874,69 @@ int wolfSSL_check_private_key(const WOLFSSL* ssl)
88668874
{
88678875
int res = WOLFSSL_SUCCESS;
88688876

8877+
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8878+
DerBuffer *privateKey;
8879+
#ifdef WOLFSSL_DUAL_ALG_CERTS
8880+
DerBuffer *altPrivateKey;
8881+
#endif
8882+
#else
8883+
const DerBuffer *privateKey;
8884+
#ifdef WOLFSSL_DUAL_ALG_CERTS
8885+
const DerBuffer *altPrivateKey;
8886+
#endif
8887+
#endif
8888+
88698889
if (ssl == NULL) {
88708890
return WOLFSSL_FAILURE;
88718891
}
88728892
#ifdef WOLFSSL_DUAL_ALG_CERTS
88738893
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8874-
wolfssl_priv_der_unblind(ssl->buffers.key, ssl->buffers.keyMask);
8875-
wolfssl_priv_der_unblind(ssl->buffers.altKey, ssl->buffers.altKeyMask);
8876-
#endif
8877-
res = check_cert_key(ssl->buffers.certificate, ssl->buffers.key,
8878-
ssl->buffers.altKey, ssl->heap, ssl->buffers.keyDevId,
8879-
ssl->buffers.keyLabel, ssl->buffers.keyId, ssl->buffers.altKeyDevId,
8880-
ssl->buffers.altKeyLabel, ssl->buffers.altKeyId);
8881-
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8882-
if (res == WOLFSSL_SUCCESS) {
8883-
int ret;
8884-
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.key,
8885-
(DerBuffer**)&ssl->buffers.keyMask);
8886-
if (ret == 0) {
8887-
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.altKey,
8888-
(DerBuffer**)&ssl->buffers.altKeyMask);
8889-
}
8890-
if (ret != 0) {
8894+
privateKey = wolfssl_priv_der_unblind(ssl->buffers.key,
8895+
ssl->buffers.keyMask);
8896+
if (privateKey == NULL) {
8897+
res = WOLFSSL_FAILURE;
8898+
}
8899+
if (ssl->buffers.altKey != NULL) {
8900+
altPrivateKey = wolfssl_priv_der_unblind(ssl->buffers.altKey,
8901+
ssl->buffers.altKeyMask);
8902+
if (altPrivateKey == NULL) {
88918903
res = WOLFSSL_FAILURE;
88928904
}
88938905
}
8894-
#endif
8906+
else {
8907+
altPrivateKey = NULL;
8908+
}
88958909
#else
8910+
privateKey = ssl->buffers.key;
8911+
altPrivateKey = ssl->buffers.altKey;
8912+
#endif
8913+
if (res == WOLFSSL_SUCCESS) {
8914+
res = check_cert_key(ssl->buffers.certificate, privateKey,
8915+
altPrivateKey, ssl->heap, ssl->buffers.keyDevId,
8916+
ssl->buffers.keyLabel, ssl->buffers.keyId, ssl->buffers.altKeyDevId,
8917+
ssl->buffers.altKeyLabel, ssl->buffers.altKeyId);
8918+
}
88968919
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8897-
wolfssl_priv_der_blind_toggle(ssl->buffers.key, ssl->buffers.keyMask);
8920+
wolfssl_priv_der_unblind_free(privateKey);
8921+
wolfssl_priv_der_unblind_free(altPrivateKey);
88988922
#endif
8899-
res = check_cert_key(ssl->buffers.certificate, ssl->buffers.key, NULL,
8900-
ssl->heap, ssl->buffers.keyDevId, ssl->buffers.keyLabel,
8901-
ssl->buffers.keyId, INVALID_DEVID, 0, 0);
8923+
#else
89028924
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8925+
privateKey = wolfssl_priv_der_unblind(ssl->buffers.key,
8926+
ssl->buffers.keyMask);
8927+
if (privateKey == NULL) {
8928+
res = WOLFSSL_FAILURE;
8929+
}
8930+
#else
8931+
privateKey = ssl->buffers.key;
8932+
#endif
89038933
if (res == WOLFSSL_SUCCESS) {
8904-
int ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.key,
8905-
(DerBuffer**)&ssl->buffers.keyMask);
8906-
if (ret != 0) {
8907-
res = WOLFSSL_FAILURE;
8908-
}
8934+
res = check_cert_key(ssl->buffers.certificate, privateKey, NULL,
8935+
ssl->heap, ssl->buffers.keyDevId, ssl->buffers.keyLabel,
8936+
ssl->buffers.keyId, INVALID_DEVID, 0, 0);
89098937
}
8938+
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8939+
wolfssl_priv_der_unblind_free(privateKey);
89108940
#endif
89118941
#endif
89128942

@@ -20988,14 +21018,15 @@ WOLFSSL_CTX* wolfSSL_set_SSL_CTX(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
2098821018
ssl->buffers.altKey = ctx->altPrivateKey;
2098921019
#else
2099021020
if (ctx->altPrivateKey != NULL) {
20991-
ret = AllocCopyDer(&ssl->buffers.altkey, ctx->altPrivateKey->buffer,
21021+
ret = AllocCopyDer(&ssl->buffers.altKey, ctx->altPrivateKey->buffer,
2099221022
ctx->altPrivateKey->length, ctx->altPrivateKey->type,
2099321023
ctx->altPrivateKey->heap);
2099421024
if (ret != 0) {
2099521025
return NULL;
2099621026
}
2099721027
/* Blind the private key for the SSL with new random mask. */
20998-
wolfssl_priv_der_unblind(ssl->buffers.altKey, ctx->altPrivateKeyMask);
21028+
wolfssl_priv_der_blind_toggle(ssl->buffers.altKey,
21029+
ctx->altPrivateKeyMask);
2099921030
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.altKey,
2100021031
&ssl->buffers.altKeyMask);
2100121032
if (ret != 0) {

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)