Skip to content

Commit 08a5694

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 62ca344 commit 08a5694

10 files changed

Lines changed: 187 additions & 54 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: 30 additions & 0 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)
@@ -950,6 +971,10 @@ function(generate_lib_src_list LIB_SOURCES)
950971
else()
951972
list(APPEND LIB_SOURCES wolfcrypt/src/fe_operations.c)
952973
endif()
974+
if(WOLFSSL_USER_SETTINGS)
975+
# In a user_settings.h build, we need this file, too.
976+
list(APPEND LIB_SOURCES wolfcrypt/src/fe_low_mem.c)
977+
endif()
953978
endif()
954979
endif()
955980

@@ -966,6 +991,11 @@ function(generate_lib_src_list LIB_SOURCES)
966991
list(APPEND LIB_SOURCES wolfcrypt/src/fe_operations.c)
967992
endif()
968993
endif()
994+
995+
if(WOLFSSL_USER_SETTINGS)
996+
# In a user_settings.h build, we need this file, too.
997+
list(APPEND LIB_SOURCES wolfcrypt/src/ge_low_mem.c)
998+
endif()
969999
endif()
9701000
endif()
9711001

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
@@ -7524,11 +7524,19 @@ int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX* ctx)
75247524
#ifdef WOLFSSL_DUAL_ALG_CERTS
75257525
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
75267526
privateKey = wolfssl_priv_der_unblind(ctx->privateKey, ctx->privateKeyMask);
7527-
altPrivateKey = wolfssl_priv_der_unblind(ctx->altPrivateKey,
7528-
ctx->altPrivateKeyMask);
7529-
if ((privateKey == NULL) || (altPrivateKey == NULL)) {
7527+
if (privateKey == NULL) {
75307528
res = WOLFSSL_FAILURE;
75317529
}
7530+
if (ctx->altPrivateKey != NULL) {
7531+
altPrivateKey = wolfssl_priv_der_unblind(ctx->altPrivateKey,
7532+
ctx->altPrivateKeyMask);
7533+
if (altPrivateKey == NULL) {
7534+
res = WOLFSSL_FAILURE;
7535+
}
7536+
}
7537+
else {
7538+
altPrivateKey = NULL;
7539+
}
75327540
#else
75337541
privateKey = ctx->privateKey;
75347542
altPrivateKey = ctx->altPrivateKey;
@@ -8871,47 +8879,69 @@ int wolfSSL_check_private_key(const WOLFSSL* ssl)
88718879
{
88728880
int res = WOLFSSL_SUCCESS;
88738881

8882+
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8883+
DerBuffer *privateKey;
8884+
#ifdef WOLFSSL_DUAL_ALG_CERTS
8885+
DerBuffer *altPrivateKey;
8886+
#endif
8887+
#else
8888+
const DerBuffer *privateKey;
8889+
#ifdef WOLFSSL_DUAL_ALG_CERTS
8890+
const DerBuffer *altPrivateKey;
8891+
#endif
8892+
#endif
8893+
88748894
if (ssl == NULL) {
88758895
return WOLFSSL_FAILURE;
88768896
}
88778897
#ifdef WOLFSSL_DUAL_ALG_CERTS
88788898
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8879-
wolfssl_priv_der_unblind(ssl->buffers.key, ssl->buffers.keyMask);
8880-
wolfssl_priv_der_unblind(ssl->buffers.altKey, ssl->buffers.altKeyMask);
8881-
#endif
8882-
res = check_cert_key(ssl->buffers.certificate, ssl->buffers.key,
8883-
ssl->buffers.altKey, ssl->heap, ssl->buffers.keyDevId,
8884-
ssl->buffers.keyLabel, ssl->buffers.keyId, ssl->buffers.altKeyDevId,
8885-
ssl->buffers.altKeyLabel, ssl->buffers.altKeyId);
8886-
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8887-
if (res == WOLFSSL_SUCCESS) {
8888-
int ret;
8889-
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.key,
8890-
(DerBuffer**)&ssl->buffers.keyMask);
8891-
if (ret == 0) {
8892-
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.altKey,
8893-
(DerBuffer**)&ssl->buffers.altKeyMask);
8894-
}
8895-
if (ret != 0) {
8899+
privateKey = wolfssl_priv_der_unblind(ssl->buffers.key,
8900+
ssl->buffers.keyMask);
8901+
if (privateKey == NULL) {
8902+
res = WOLFSSL_FAILURE;
8903+
}
8904+
if (ssl->buffers.altKey != NULL) {
8905+
altPrivateKey = wolfssl_priv_der_unblind(ssl->buffers.altKey,
8906+
ssl->buffers.altKeyMask);
8907+
if (altPrivateKey == NULL) {
88968908
res = WOLFSSL_FAILURE;
88978909
}
88988910
}
8899-
#endif
8911+
else {
8912+
altPrivateKey = NULL;
8913+
}
89008914
#else
8915+
privateKey = ssl->buffers.key;
8916+
altPrivateKey = ssl->buffers.altKey;
8917+
#endif
8918+
if (res == WOLFSSL_SUCCESS) {
8919+
res = check_cert_key(ssl->buffers.certificate, privateKey,
8920+
altPrivateKey, ssl->heap, ssl->buffers.keyDevId,
8921+
ssl->buffers.keyLabel, ssl->buffers.keyId, ssl->buffers.altKeyDevId,
8922+
ssl->buffers.altKeyLabel, ssl->buffers.altKeyId);
8923+
}
89018924
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8902-
wolfssl_priv_der_blind_toggle(ssl->buffers.key, ssl->buffers.keyMask);
8925+
wolfssl_priv_der_unblind_free(privateKey);
8926+
wolfssl_priv_der_unblind_free(altPrivateKey);
89038927
#endif
8904-
res = check_cert_key(ssl->buffers.certificate, ssl->buffers.key, NULL,
8905-
ssl->heap, ssl->buffers.keyDevId, ssl->buffers.keyLabel,
8906-
ssl->buffers.keyId, INVALID_DEVID, 0, 0);
8928+
#else
89078929
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8930+
privateKey = wolfssl_priv_der_unblind(ssl->buffers.key,
8931+
ssl->buffers.keyMask);
8932+
if (privateKey == NULL) {
8933+
res = WOLFSSL_FAILURE;
8934+
}
8935+
#else
8936+
privateKey = ssl->buffers.key;
8937+
#endif
89088938
if (res == WOLFSSL_SUCCESS) {
8909-
int ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.key,
8910-
(DerBuffer**)&ssl->buffers.keyMask);
8911-
if (ret != 0) {
8912-
res = WOLFSSL_FAILURE;
8913-
}
8939+
res = check_cert_key(ssl->buffers.certificate, privateKey, NULL,
8940+
ssl->heap, ssl->buffers.keyDevId, ssl->buffers.keyLabel,
8941+
ssl->buffers.keyId, INVALID_DEVID, 0, 0);
89148942
}
8943+
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8944+
wolfssl_priv_der_unblind_free(privateKey);
89158945
#endif
89168946
#endif
89178947

@@ -20993,14 +21023,15 @@ WOLFSSL_CTX* wolfSSL_set_SSL_CTX(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
2099321023
ssl->buffers.altKey = ctx->altPrivateKey;
2099421024
#else
2099521025
if (ctx->altPrivateKey != NULL) {
20996-
ret = AllocCopyDer(&ssl->buffers.altkey, ctx->altPrivateKey->buffer,
21026+
ret = AllocCopyDer(&ssl->buffers.altKey, ctx->altPrivateKey->buffer,
2099721027
ctx->altPrivateKey->length, ctx->altPrivateKey->type,
2099821028
ctx->altPrivateKey->heap);
2099921029
if (ret != 0) {
2100021030
return NULL;
2100121031
}
2100221032
/* Blind the private key for the SSL with new random mask. */
21003-
wolfssl_priv_der_unblind(ssl->buffers.altKey, ctx->altPrivateKeyMask);
21033+
wolfssl_priv_der_blind_toggle(ssl->buffers.altKey,
21034+
ctx->altPrivateKeyMask);
2100421035
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.altKey,
2100521036
&ssl->buffers.altKeyMask);
2100621037
if (ret != 0) {

0 commit comments

Comments
 (0)