Files
wolfssl/tests/api/test_mldsa.h
T
Daniele Lacamera 0a560b0106 tests: MC/DC gap-closing for Part 3 wolfCrypt modules
Close API-reachable and file-static MC/DC gaps identified by the per-module
GAPS.md reports (+291 conditions across the union):
  tfm.c 71->89, integer.c 49->92, ed448.c 62->92 (91%), wc_slhdsa.c 99->155
  (88%), wc_mldsa.c 169->252, wc_mlkem.c 46->65 (96%), wc_lms_impl.c 60->82,
  wc_xmss_impl.c 38->57.

Enriched DecisionCoverage in test_wolfmath.c (tfm/integer), test_ed448.c,
test_slhdsa.c; new arg/state/length cases in test_mldsa.c/test_mlkem.c; and
per-source *_gap white-box supplements under tests/unit-mcdc/ driving the
static internals (WOTS/FORS/NTT/poly/Merkle/comba/Montgomery, etc.). Remaining
uncovered conditions are justified residuals (AVX2/cpuid dispatch on an
always-AVX2 host, deep alloc/crypto-failure err-chains, asm-only paths).
2026-07-17 08:56:03 +02:00

105 lines
5.1 KiB
C

/* test_mldsa.h
*
* Copyright (C) 2006-2026 wolfSSL Inc.
*
* This file is part of wolfSSL.
*
* wolfSSL is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* wolfSSL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
*/
#ifndef WOLFCRYPT_TEST_MLDSA_H
#define WOLFCRYPT_TEST_MLDSA_H
#include <tests/api/api_decl.h>
/* Canonical ML-DSA tests defined in tests/api/test_mldsa.c.
* These exercise the wc_MlDsaKey / wc_MlDsaKey_* / WC_MLDSA_* API surface
* directly and run under all build configurations. */
int test_mldsa(void);
int test_mldsa_sign_pubonly_fails(void);
int test_mldsa_make_key(void);
int test_mldsa_sign(void);
int test_mldsa_verify(void);
int test_mldsa_sign_vfy(void);
int test_mldsa_check_key(void);
int test_mldsa_public_der_decode(void);
int test_mldsa_der(void);
int test_mldsa_oneasymkey_version(void);
int test_mldsa_make_key_from_seed(void);
int test_mldsa_sig_kats(void);
int test_mldsa_sign_ctx_kats(void);
int test_mldsa_verify_ctx_kats(void);
int test_mldsa_verify_kats(void);
int test_mldsa_sign_mu_kats(void);
int test_mldsa_verify_mu_kats(void);
int test_mldsa_PrivateKeyDecode_OpenSSL_form(void);
int test_mldsa_pkcs8_import_OpenSSL_form(void);
int test_mldsa_pkcs8_export_import_wolfSSL_form(void);
int test_mldsa_encode_w1_large_values(void);
int test_mldsa_pkcs12(void);
int test_mldsa_x509_pubkey_sigtype(void);
/* Negative length-validation regression tests, also defined in
* tests/api/test_mldsa.c. */
int test_mldsa_verify_hash(void);
int test_dilithium_hash(void);
/* MC/DC coverage supplements defined in tests/api/test_mldsa.c. */
int test_wc_MldsaDecisionCoverage(void);
int test_wc_MldsaFeatureCoverage(void);
/* Legacy-name shim coverage defined in tests/api/test_mldsa_legacy.c.
* Single function -- compile-time wc_static_assert checks for every alias
* + one runtime smoke test that drives each arg-reordering macro family.
* Becomes a TEST_SKIPPED stub when WOLFSSL_NO_DILITHIUM_LEGACY_NAMES is
* defined. */
int test_mldsa_legacy_shim(void);
int test_wc_MldsaDecisionCoverage2(void);
int test_wc_MldsaDerDecisionCoverage(void);
#define TEST_MLDSA_DECLS \
TEST_DECL_GROUP("mldsa", test_mldsa), \
TEST_DECL_GROUP("mldsa", test_mldsa_sign_pubonly_fails), \
TEST_DECL_GROUP("mldsa", test_mldsa_make_key), \
TEST_DECL_GROUP("mldsa", test_mldsa_sign), \
TEST_DECL_GROUP("mldsa", test_mldsa_verify), \
TEST_DECL_GROUP("mldsa", test_mldsa_sign_vfy), \
TEST_DECL_GROUP("mldsa", test_mldsa_check_key), \
TEST_DECL_GROUP("mldsa", test_mldsa_public_der_decode), \
TEST_DECL_GROUP("mldsa", test_mldsa_der), \
TEST_DECL_GROUP("mldsa", test_mldsa_oneasymkey_version), \
TEST_DECL_GROUP("mldsa", test_mldsa_make_key_from_seed), \
TEST_DECL_GROUP("mldsa", test_mldsa_sig_kats), \
TEST_DECL_GROUP("mldsa", test_mldsa_sign_ctx_kats), \
TEST_DECL_GROUP("mldsa", test_mldsa_verify_ctx_kats), \
TEST_DECL_GROUP("mldsa", test_mldsa_verify_kats), \
TEST_DECL_GROUP("mldsa", test_mldsa_sign_mu_kats), \
TEST_DECL_GROUP("mldsa", test_mldsa_verify_mu_kats), \
TEST_DECL_GROUP("mldsa", test_mldsa_PrivateKeyDecode_OpenSSL_form), \
TEST_DECL_GROUP("mldsa", test_mldsa_pkcs8_import_OpenSSL_form), \
TEST_DECL_GROUP("mldsa", test_mldsa_pkcs8_export_import_wolfSSL_form), \
TEST_DECL_GROUP("mldsa", test_mldsa_encode_w1_large_values), \
TEST_DECL_GROUP("mldsa", test_mldsa_pkcs12), \
TEST_DECL_GROUP("mldsa", test_mldsa_x509_pubkey_sigtype), \
TEST_DECL_GROUP("mldsa", test_mldsa_verify_hash), \
TEST_DECL_GROUP("mldsa", test_dilithium_hash), \
TEST_DECL_GROUP("mldsa", test_wc_MldsaDecisionCoverage), \
TEST_DECL_GROUP("mldsa", test_wc_MldsaFeatureCoverage), \
TEST_DECL_GROUP("mldsa", test_mldsa_legacy_shim), \
TEST_DECL_GROUP("mldsa", test_wc_MldsaDecisionCoverage2), \
TEST_DECL_GROUP("mldsa", test_wc_MldsaDerDecisionCoverage)
#endif /* WOLFCRYPT_TEST_MLDSA_H */