Skip to content
Open
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
13 changes: 11 additions & 2 deletions .github/workflows/cryptocb-only.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
name: cryptocb-only Tests

# START OF COMMON SECTION
Expand Down Expand Up @@ -117,9 +117,18 @@
{"name": "curve25519",
"comment": "WOLF_CRYPTO_CB_ONLY_CURVE25519: strips software X25519 (keygen/shared-secret); swdev provides the software path via cryptocb. Nonblock and async X25519 have no callback path and are left disabled.",
"configure": ["CPPFLAGS=-DWOLF_CRYPTO_CB_ONLY_CURVE25519"]},
{"name": "mldsa",
"comment": "WOLF_CRYPTO_CB_ONLY_MLDSA: strips the software ML-DSA core (NTT, matrix expansion, rejection sampling, the sign/verify workers and the x86 assembly); key import/export, the size queries and the DER paths stay, and the cached matrix/vector fields stay in the key struct so its layout is unchanged. The in-tree cryptocb test registers a callback-only ML-DSA device and drives key generation, signing, verifying and the private-key check through it, so the successful dispatch path is covered and not just the no-device refusal.",
"configure": ["CPPFLAGS=-DWOLF_CRYPTO_CB_ONLY_MLDSA"]},
{"name": "mldsa-verify-only",
"comment": "WOLF_CRYPTO_CB_ONLY_MLDSA against a verify-only ML-DSA build. That combination drops WOLFSSL_MLDSA_CHECK_KEY and the signing entry points, so it catches a callback-only path that assumes an API which this configuration does not compile.",
"configure": ["--enable-mldsa=verify-only", "CPPFLAGS=-DWOLF_CRYPTO_CB_ONLY_MLDSA"]},
{"name": "mldsa-no-verify",
"comment": "WOLF_CRYPTO_CB_ONLY_MLDSA against a sign-only ML-DSA build (WOLFSSL_MLDSA_NO_VERIFY), the mirror of the verify-only entry.",
"configure": ["--enable-mldsa=sign", "CPPFLAGS=-DWOLF_CRYPTO_CB_ONLY_MLDSA"]},
{"name": "all",
"comment": "All seven ONLY_* macros at once: every supported software primitive is stripped and dispatched through cryptocb. Catches any cross-algorithm call that a single-strip entry would still resolve via the remaining software paths.",
"configure": ["CPPFLAGS=-DWOLF_CRYPTO_CB_ONLY_ECC -DWOLF_CRYPTO_CB_ONLY_RSA -DWOLF_CRYPTO_CB_ONLY_SHA256 -DWOLF_CRYPTO_CB_ONLY_SHA512 -DWOLF_CRYPTO_CB_ONLY_AES -DWOLF_CRYPTO_CB_ONLY_ED25519 -DWOLF_CRYPTO_CB_ONLY_CURVE25519"]}
"comment": "All eight ONLY_* macros at once: every supported software primitive is stripped and dispatched through cryptocb. Catches any cross-algorithm call that a single-strip entry would still resolve via the remaining software paths.",
"configure": ["CPPFLAGS=-DWOLF_CRYPTO_CB_ONLY_ECC -DWOLF_CRYPTO_CB_ONLY_RSA -DWOLF_CRYPTO_CB_ONLY_SHA256 -DWOLF_CRYPTO_CB_ONLY_SHA512 -DWOLF_CRYPTO_CB_ONLY_AES -DWOLF_CRYPTO_CB_ONLY_ED25519 -DWOLF_CRYPTO_CB_ONLY_CURVE25519 -DWOLF_CRYPTO_CB_ONLY_MLDSA"]}
]}
EOF
.github/scripts/parallel-make-check.py \
Expand Down
1 change: 1 addition & 0 deletions tests/api.c
Original file line number Diff line number Diff line change
Expand Up @@ -27983,6 +27983,7 @@ static int test_wc_SignCRL_mldsa(void)
EXPECT_DECLS;
#if defined(WOLFSSL_CERT_GEN) && defined(HAVE_CRL) && !defined(NO_FILESYSTEM) && \
!defined(NO_ASN) && defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
defined(WOLFSSL_PEM_TO_DER) && !defined(WOLFSSL_MLDSA_NO_SIGN) && \
!defined(WOLFSSL_MLDSA_NO_ASN1)
static const struct {
Expand Down
24 changes: 21 additions & 3 deletions tests/api/test_mldsa.c
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,8 @@ int test_mldsa(void)
int test_mldsa_sign_pubonly_fails(void)
{
EXPECT_DECLS;
#if !defined(HAVE_FIPS) || FIPS_VERSION3_GE(7,0,0)
#if (!defined(HAVE_FIPS) || FIPS_VERSION3_GE(7,0,0)) && \
defined(WC_MLDSA_HAVE_NATIVE)
#if defined(WOLFSSL_HAVE_MLDSA) && \
!defined(WOLFSSL_MLDSA_NO_SIGN) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
Expand Down Expand Up @@ -803,6 +804,7 @@ int test_mldsa_make_key(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY)
wc_MlDsaKey* key;
WC_RNG rng;
Expand Down Expand Up @@ -1263,6 +1265,7 @@ int test_mldsa_sign_vfy(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
!defined(WOLFSSL_MLDSA_NO_SIGN) && !defined(WOLFSSL_MLDSA_NO_VERIFY)
wc_MlDsaKey* key;
Expand Down Expand Up @@ -1351,6 +1354,7 @@ int test_mldsa_check_key(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
defined(WOLFSSL_MLDSA_CHECK_KEY) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY)
wc_MlDsaKey* checkKey;
Expand Down Expand Up @@ -3020,6 +3024,7 @@ int test_mldsa_der(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_ASN1) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY)
wc_MlDsaKey* key;
Expand Down Expand Up @@ -3292,6 +3297,7 @@ int test_mldsa_oneasymkey_version(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && !defined(WOLFSSL_MLDSA_NO_ASN1) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY)
#ifndef WOLFSSL_NO_ML_DSA_44
ExpectIntEQ(mldsa_oneasymkey_version_check(WC_ML_DSA_44),
Expand All @@ -3313,6 +3319,7 @@ int test_mldsa_make_key_from_seed(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY)
wc_MlDsaKey* key;
#ifndef WOLFSSL_NO_ML_DSA_44
Expand Down Expand Up @@ -12597,6 +12604,7 @@ int test_mldsa_sign_ctx_kats(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_SIGN)
wc_MlDsaKey* key;
word32 sigLen;
Expand Down Expand Up @@ -16829,6 +16837,7 @@ int test_mldsa_verify_ctx_kats(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_VERIFY)
wc_MlDsaKey* key;
int res;
Expand Down Expand Up @@ -24622,6 +24631,7 @@ int test_mldsa_sign_mu_kats(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && !defined(WOLFSSL_MLDSA_NO_SIGN) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
(!defined(HAVE_FIPS) || FIPS_VERSION3_GE(7,0,0))
wc_MlDsaKey* key = NULL;
word32 sigLen;
Expand Down Expand Up @@ -27483,6 +27493,7 @@ int test_mldsa_verify_mu_kats(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && !defined(WOLFSSL_MLDSA_NO_VERIFY) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
(!defined(HAVE_FIPS) || FIPS_VERSION3_GE(7,0,0))
wc_MlDsaKey* key = NULL;
byte* sigBuf = NULL;
Expand Down Expand Up @@ -29747,6 +29758,7 @@ int test_mldsa_PrivateKeyDecode_OpenSSL_form(void)
EXPECT_DECLS;

#if !defined(NO_ASN) && defined(HAVE_PKCS8) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
defined(WOLFSSL_HAVE_MLDSA) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
!defined(WOLFSSL_MLDSA_NO_ASN1) && defined(WOLFSSL_ASN_TEMPLATE)
Expand Down Expand Up @@ -29840,6 +29852,7 @@ int test_mldsa_pkcs8_import_OpenSSL_form(void)
{
EXPECT_DECLS;
#if !defined(NO_ASN) && defined(HAVE_PKCS8) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
defined(WOLFSSL_HAVE_MLDSA) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
!defined(WOLFSSL_MLDSA_NO_SIGN) && \
Expand Down Expand Up @@ -29914,6 +29927,7 @@ int test_mldsa_pkcs8_export_import_wolfSSL_form(void)
{
EXPECT_DECLS;
#if !defined(NO_ASN) && defined(HAVE_PKCS8) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
defined(WOLFSSL_HAVE_MLDSA) && !defined(NO_TLS) && \
(!defined(NO_WOLFSSL_CLIENT) || !defined(NO_WOLFSSL_SERVER)) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
Expand Down Expand Up @@ -30028,7 +30042,7 @@ int test_mldsa_pkcs8_export_import_wolfSSL_form(void)
int test_mldsa_encode_w1_large_values(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
#if defined(WOLFSSL_HAVE_MLDSA) && defined(WC_MLDSA_HAVE_NATIVE) && \
(!defined(WOLFSSL_MLDSA_NO_SIGN) || \
!defined(WOLFSSL_MLDSA_NO_VERIFY))

Expand Down Expand Up @@ -30546,6 +30560,7 @@ int test_mldsa_verify_hash(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
!defined(WOLFSSL_MLDSA_NO_VERIFY)
wc_MlDsaKey key;
Expand Down Expand Up @@ -30586,6 +30601,7 @@ int test_dilithium_hash(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
!defined(WOLFSSL_MLDSA_NO_VERIFY)
wc_MlDsaKey key;
Expand Down Expand Up @@ -30799,6 +30815,7 @@ int test_wc_MldsaFeatureCoverage(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE) && \
!defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && \
!defined(WOLFSSL_MLDSA_VERIFY_ONLY) && \
!defined(WOLFSSL_MLDSA_NO_SIGN) && \
Expand Down Expand Up @@ -30888,7 +30905,8 @@ int test_wc_MldsaFeatureCoverage(void)
int test_wc_MldsaDecisionCoverage2(void)
{
EXPECT_DECLS;
#if defined(WOLFSSL_HAVE_MLDSA)
#if defined(WOLFSSL_HAVE_MLDSA) && \
defined(WC_MLDSA_HAVE_NATIVE)
wc_MlDsaKey key;
int inited = 0;

Expand Down
3 changes: 2 additions & 1 deletion tests/api/test_mldsa_legacy.c
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,8 @@ int test_mldsa_legacy_shim(void)
#if !defined(WOLFSSL_MLDSA_NO_MAKE_KEY) && !defined(WOLFSSL_MLDSA_NO_SIGN) && \
!defined(WOLFSSL_MLDSA_NO_VERIFY) && !defined(WOLFSSL_NO_ML_DSA_44) && \
defined(WOLFSSL_MLDSA_PUBLIC_KEY) && defined(WOLFSSL_MLDSA_PRIVATE_KEY) && \
!defined(WC_NO_RNG)
!defined(WC_NO_RNG) && \
defined(WC_MLDSA_HAVE_NATIVE)
{
dilithium_key key; /* legacy typedef */
WC_RNG rng;
Expand Down
1 change: 1 addition & 0 deletions wolfcrypt/src/cryptocb.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ Crypto Callback Build Options:
* WOLF_CRYPTO_CB_ONLY_AES: Use only callbacks for AES default: off
* WOLF_CRYPTO_CB_ONLY_ED25519: Use only callbacks for Ed25519 default: off
* WOLF_CRYPTO_CB_ONLY_CURVE25519: Use only callbacks for X25519 default: off
* WOLF_CRYPTO_CB_ONLY_MLDSA: Use only callbacks for ML-DSA default: off
*/

#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
Expand Down
Loading
Loading