Skip to content

Commit 4773ea6

Browse files
authored
Merge pull request #9637 from Frauschi/test_coverage
Increase test coverage for PQC and CMake
2 parents b520934 + 14ce795 commit 4773ea6

File tree

10 files changed

+187
-54
lines changed

10 files changed

+187
-54
lines changed

.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
@@ -7175,6 +7175,7 @@ int SetSSL_CTX(WOLFSSL* ssl, WOLFSSL_CTX* ctx, int writeDup)
71757175
if (ret != 0) {
71767176
return ret;
71777177
}
7178+
ret = WOLFSSL_SUCCESS;
71787179
}
71797180
#endif
71807181
ssl->buffers.keyType = ctx->privateKeyType;

src/ssl.c

Lines changed: 63 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7527,11 +7527,19 @@ int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX* ctx)
75277527
#ifdef WOLFSSL_DUAL_ALG_CERTS
75287528
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
75297529
privateKey = wolfssl_priv_der_unblind(ctx->privateKey, ctx->privateKeyMask);
7530-
altPrivateKey = wolfssl_priv_der_unblind(ctx->altPrivateKey,
7531-
ctx->altPrivateKeyMask);
7532-
if ((privateKey == NULL) || (altPrivateKey == NULL)) {
7530+
if (privateKey == NULL) {
75337531
res = WOLFSSL_FAILURE;
75347532
}
7533+
if (ctx->altPrivateKey != NULL) {
7534+
altPrivateKey = wolfssl_priv_der_unblind(ctx->altPrivateKey,
7535+
ctx->altPrivateKeyMask);
7536+
if (altPrivateKey == NULL) {
7537+
res = WOLFSSL_FAILURE;
7538+
}
7539+
}
7540+
else {
7541+
altPrivateKey = NULL;
7542+
}
75357543
#else
75367544
privateKey = ctx->privateKey;
75377545
altPrivateKey = ctx->altPrivateKey;
@@ -8874,47 +8882,69 @@ int wolfSSL_check_private_key(const WOLFSSL* ssl)
88748882
{
88758883
int res = WOLFSSL_SUCCESS;
88768884

8885+
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8886+
DerBuffer *privateKey;
8887+
#ifdef WOLFSSL_DUAL_ALG_CERTS
8888+
DerBuffer *altPrivateKey;
8889+
#endif
8890+
#else
8891+
const DerBuffer *privateKey;
8892+
#ifdef WOLFSSL_DUAL_ALG_CERTS
8893+
const DerBuffer *altPrivateKey;
8894+
#endif
8895+
#endif
8896+
88778897
if (ssl == NULL) {
88788898
return WOLFSSL_FAILURE;
88798899
}
88808900
#ifdef WOLFSSL_DUAL_ALG_CERTS
88818901
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8882-
wolfssl_priv_der_unblind(ssl->buffers.key, ssl->buffers.keyMask);
8883-
wolfssl_priv_der_unblind(ssl->buffers.altKey, ssl->buffers.altKeyMask);
8884-
#endif
8885-
res = check_cert_key(ssl->buffers.certificate, ssl->buffers.key,
8886-
ssl->buffers.altKey, ssl->heap, ssl->buffers.keyDevId,
8887-
ssl->buffers.keyLabel, ssl->buffers.keyId, ssl->buffers.altKeyDevId,
8888-
ssl->buffers.altKeyLabel, ssl->buffers.altKeyId);
8889-
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8890-
if (res == WOLFSSL_SUCCESS) {
8891-
int ret;
8892-
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.key,
8893-
(DerBuffer**)&ssl->buffers.keyMask);
8894-
if (ret == 0) {
8895-
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.altKey,
8896-
(DerBuffer**)&ssl->buffers.altKeyMask);
8897-
}
8898-
if (ret != 0) {
8902+
privateKey = wolfssl_priv_der_unblind(ssl->buffers.key,
8903+
ssl->buffers.keyMask);
8904+
if (privateKey == NULL) {
8905+
res = WOLFSSL_FAILURE;
8906+
}
8907+
if (ssl->buffers.altKey != NULL) {
8908+
altPrivateKey = wolfssl_priv_der_unblind(ssl->buffers.altKey,
8909+
ssl->buffers.altKeyMask);
8910+
if (altPrivateKey == NULL) {
88998911
res = WOLFSSL_FAILURE;
89008912
}
89018913
}
8902-
#endif
8914+
else {
8915+
altPrivateKey = NULL;
8916+
}
89038917
#else
8918+
privateKey = ssl->buffers.key;
8919+
altPrivateKey = ssl->buffers.altKey;
8920+
#endif
8921+
if (res == WOLFSSL_SUCCESS) {
8922+
res = check_cert_key(ssl->buffers.certificate, privateKey,
8923+
altPrivateKey, ssl->heap, ssl->buffers.keyDevId,
8924+
ssl->buffers.keyLabel, ssl->buffers.keyId, ssl->buffers.altKeyDevId,
8925+
ssl->buffers.altKeyLabel, ssl->buffers.altKeyId);
8926+
}
89048927
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8905-
wolfssl_priv_der_blind_toggle(ssl->buffers.key, ssl->buffers.keyMask);
8928+
wolfssl_priv_der_unblind_free(privateKey);
8929+
wolfssl_priv_der_unblind_free(altPrivateKey);
89068930
#endif
8907-
res = check_cert_key(ssl->buffers.certificate, ssl->buffers.key, NULL,
8908-
ssl->heap, ssl->buffers.keyDevId, ssl->buffers.keyLabel,
8909-
ssl->buffers.keyId, INVALID_DEVID, 0, 0);
8931+
#else
89108932
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8933+
privateKey = wolfssl_priv_der_unblind(ssl->buffers.key,
8934+
ssl->buffers.keyMask);
8935+
if (privateKey == NULL) {
8936+
res = WOLFSSL_FAILURE;
8937+
}
8938+
#else
8939+
privateKey = ssl->buffers.key;
8940+
#endif
89118941
if (res == WOLFSSL_SUCCESS) {
8912-
int ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.key,
8913-
(DerBuffer**)&ssl->buffers.keyMask);
8914-
if (ret != 0) {
8915-
res = WOLFSSL_FAILURE;
8916-
}
8942+
res = check_cert_key(ssl->buffers.certificate, privateKey, NULL,
8943+
ssl->heap, ssl->buffers.keyDevId, ssl->buffers.keyLabel,
8944+
ssl->buffers.keyId, INVALID_DEVID, 0, 0);
89178945
}
8946+
#ifdef WOLFSSL_BLIND_PRIVATE_KEY
8947+
wolfssl_priv_der_unblind_free(privateKey);
89188948
#endif
89198949
#endif
89208950

@@ -20998,14 +21028,15 @@ WOLFSSL_CTX* wolfSSL_set_SSL_CTX(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
2099821028
ssl->buffers.altKey = ctx->altPrivateKey;
2099921029
#else
2100021030
if (ctx->altPrivateKey != NULL) {
21001-
ret = AllocCopyDer(&ssl->buffers.altkey, ctx->altPrivateKey->buffer,
21031+
ret = AllocCopyDer(&ssl->buffers.altKey, ctx->altPrivateKey->buffer,
2100221032
ctx->altPrivateKey->length, ctx->altPrivateKey->type,
2100321033
ctx->altPrivateKey->heap);
2100421034
if (ret != 0) {
2100521035
return NULL;
2100621036
}
2100721037
/* Blind the private key for the SSL with new random mask. */
21008-
wolfssl_priv_der_unblind(ssl->buffers.altKey, ctx->altPrivateKeyMask);
21038+
wolfssl_priv_der_blind_toggle(ssl->buffers.altKey,
21039+
ctx->altPrivateKeyMask);
2100921040
ret = wolfssl_priv_der_blind(ssl->rng, ssl->buffers.altKey,
2101021041
&ssl->buffers.altKeyMask);
2101121042
if (ret != 0) {

0 commit comments

Comments
 (0)