Set prehash flag in MLDSA session as per test parameter.

Fixes: 76a5877072c ("test/crypto: add ML-KEM and ML-DSA cases")
Cc: [email protected]

Signed-off-by: Gowrishankar Muthukrishnan <[email protected]>
---
 app/test/test_cryptodev_asym.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index 73a8198e53..90af49e485 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -4236,6 +4236,7 @@ mldsa_sign(const void *test_data)
 
        xform.mldsa.type = vector->type;
        xform.mldsa.sign_deterministic = vector->sign_deterministic;
+       xform.mldsa.sign_prehash = !!vector->hash;
        xform.xform_type = RTE_CRYPTO_ASYM_XFORM_ML_DSA;
 
        rte_cryptodev_info_get(dev_id, &dev_info);
@@ -4310,6 +4311,7 @@ mldsa_sign(const void *test_data)
        self->op->asym->mldsa.sigver.pubkey.length = vector->pubkey.length;
        self->op->asym->mldsa.sigver.sign.data = sign;
        self->op->asym->mldsa.sigver.sign.length = sign_len;
+       self->op->asym->mldsa.sigver.hash = vector->hash;
 
        TEST_ASSERT_SUCCESS(send_one(),
                "Failed to process crypto op (ML-DSA Verify)");
@@ -4332,6 +4334,7 @@ mldsa_sign(const void *test_data)
        self->op->asym->mldsa.sigver.pubkey.length = vector->pubkey.length;
        self->op->asym->mldsa.sigver.sign.data = sign;
        self->op->asym->mldsa.sigver.sign.length = sign_len;
+       self->op->asym->mldsa.sigver.hash = vector->hash;
 
        TEST_ASSERT_SUCCESS(send_one_no_status_check(),
                "Failed to process crypto op (ML-DSA Verify)");
@@ -4352,12 +4355,26 @@ mldsa_verify(const void *test_data)
        const struct crypto_testsuite_mldsa_params *vector = test_data;
        const uint8_t dev_id = params->valid_devs[0];
        struct rte_crypto_asym_xform xform = {0};
+       struct rte_cryptodev_info dev_info;
        uint8_t sign[TEST_DATA_SIZE] = {0};
        size_t sign_len;
 
        xform.mldsa.type = vector->type;
        xform.mldsa.sign_deterministic = vector->sign_deterministic;
+       xform.mldsa.sign_prehash = !!vector->hash;
        xform.xform_type = RTE_CRYPTO_ASYM_XFORM_ML_DSA;
+
+       rte_cryptodev_info_get(dev_id, &dev_info);
+
+       /* Check if prehash is supported */
+       if (vector->hash) {
+               if (!(dev_info.feature_flags & 
RTE_CRYPTODEV_FF_MLDSA_SIGN_PREHASH)) {
+                       RTE_LOG(DEBUG, USER1,
+                               "Device doesn't support prehash in ML-DSA 
verify. Test skipped\n");
+                       return TEST_SKIPPED;
+               }
+       }
+
        if (rte_cryptodev_asym_session_create(dev_id, &xform,
                        params->session_mpool, &self->sess) < 0) {
                RTE_LOG(ERR, USER1, "line %u FAILED: Session creation failed",
@@ -4379,6 +4396,7 @@ mldsa_verify(const void *test_data)
        self->op->asym->mldsa.sigver.pubkey.length = vector->pubkey.length;
        self->op->asym->mldsa.sigver.sign.data = vector->sign.data;
        self->op->asym->mldsa.sigver.sign.length = vector->sign.length;
+       self->op->asym->mldsa.sigver.hash = vector->hash;
 
        TEST_ASSERT_SUCCESS(send_one(),
                "Failed to process crypto op (ML-DSA Verify)");
@@ -4403,6 +4421,7 @@ mldsa_verify(const void *test_data)
        self->op->asym->mldsa.sigver.pubkey.length = vector->pubkey.length;
        self->op->asym->mldsa.sigver.sign.data = sign;
        self->op->asym->mldsa.sigver.sign.length = sign_len;
+       self->op->asym->mldsa.sigver.hash = vector->hash;
 
        TEST_ASSERT_SUCCESS(send_one_no_status_check(),
                "Failed to process crypto op (ML-DSA Verify)");
-- 
2.37.1

Reply via email to