Validate ML-KEM and ML-DSA keys.
Fixes: 76a5877072c0 ("test/crypto: add ML-KEM and ML-DSA cases")
Cc: [email protected]
Signed-off-by: Gowrishankar Muthukrishnan <[email protected]>
---
v2:
- corrected Fixes tag.
---
app/test/test_cryptodev_asym.c | 48 ++++++++-----------
app/test/test_cryptodev_ml_dsa_test_vectors.h | 8 ++++
app/test/test_cryptodev_ml_kem_test_vectors.h | 8 ++++
3 files changed, 36 insertions(+), 28 deletions(-)
diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index bf1a1fc417..73a8198e53 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -3949,19 +3949,15 @@ mlkem_keygen(const void *test_data)
rte_crypto_ml_kem_pubkey_size[vector->type],
"Incorrect Encapsulation key length\n");
- /* If the seed is all zero, keys are deterministic */
- if (memcmp(vector->d.data, (uint8_t [32]) {0},
- vector->d.length) == 0) {
- TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->dk.data,
- self->result_op->asym->mlkem.keygen.dk.data,
- self->result_op->asym->mlkem.keygen.dk.length,
- "Incorrect Decapsulation key\n");
- TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->ek.data,
- self->result_op->asym->mlkem.keygen.ek.data,
- self->result_op->asym->mlkem.keygen.ek.length,
- "Incorrect Encapsulation key\n");
- RTE_LOG(DEBUG, USER1, "Deterministic keygen test passed\n");
- }
+ TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->dk.data,
+ self->result_op->asym->mlkem.keygen.dk.data,
+ self->result_op->asym->mlkem.keygen.dk.length,
+ "Incorrect Decapsulation key\n");
+ TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->ek.data,
+ self->result_op->asym->mlkem.keygen.ek.data,
+ self->result_op->asym->mlkem.keygen.ek.length,
+ "Incorrect Encapsulation key\n");
+ RTE_LOG(DEBUG, USER1, "Deterministic keygen test passed\n");
rte_cryptodev_asym_session_free(dev_id, self->sess);
return TEST_SUCCESS;
@@ -4071,7 +4067,7 @@ mlkem_encap(const void *test_data)
self->op->asym->mlkem.decap.sk.data = sk;
self->op->asym->mlkem.decap.sk.length = 32;
- TEST_ASSERT_SUCCESS(send_one(),
+ TEST_ASSERT_SUCCESS(send_one_no_status_check(),
"Failed to process crypto op (ML-KEM Decap)");
debug_hexdump(stdout, "Shared secret from negative test",
@@ -4149,7 +4145,7 @@ mlkem_decap(const void *test_data)
self->op->asym->mlkem.decap.sk.data = sk;
self->op->asym->mlkem.decap.sk.length = 32;
- TEST_ASSERT_SUCCESS(send_one(),
+ TEST_ASSERT_SUCCESS(send_one_no_status_check(),
"Failed to process crypto op (ML-KEM Decap)");
debug_hexdump(stdout, "Shared secret from negative test",
@@ -4214,19 +4210,15 @@ mldsa_keygen(const void *test_data)
rte_crypto_ml_dsa_pubkey_size[vector->type],
"Incorrect Public key length\n");
- /* If the seed is all zero, keys are deterministic */
- if (memcmp(vector->seed.data, (uint8_t [32]) {0},
- vector->seed.length) == 0) {
- TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->privkey.data,
- self->result_op->asym->mldsa.keygen.privkey.data,
- self->result_op->asym->mldsa.keygen.privkey.length,
- "Incorrect Private key\n");
- TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->pubkey.data,
- self->result_op->asym->mldsa.keygen.pubkey.data,
- self->result_op->asym->mldsa.keygen.pubkey.length,
- "Incorrect Public key\n");
- RTE_LOG(DEBUG, USER1, "Deterministic keygen test passed\n");
- }
+ TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->privkey.data,
+ self->result_op->asym->mldsa.keygen.privkey.data,
+ self->result_op->asym->mldsa.keygen.privkey.length,
+ "Incorrect Private key\n");
+ TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->pubkey.data,
+ self->result_op->asym->mldsa.keygen.pubkey.data,
+ self->result_op->asym->mldsa.keygen.pubkey.length,
+ "Incorrect Public key\n");
+ RTE_LOG(DEBUG, USER1, "Deterministic keygen test passed\n");
rte_cryptodev_asym_session_free(dev_id, self->sess);
return TEST_SUCCESS;
diff --git a/app/test/test_cryptodev_ml_dsa_test_vectors.h
b/app/test/test_cryptodev_ml_dsa_test_vectors.h
index f2453b9f34..675a6fad04 100644
--- a/app/test/test_cryptodev_ml_dsa_test_vectors.h
+++ b/app/test/test_cryptodev_ml_dsa_test_vectors.h
@@ -1653,6 +1653,14 @@ struct crypto_testsuite_mldsa_params
mldsa_keygen_test_vectors[] = {
.data = mldsa_44_seed,
.length = sizeof(mldsa_44_seed),
},
+ .privkey = {
+ .data = mldsa_44_privkey,
+ .length = sizeof(mldsa_44_privkey),
+ },
+ .pubkey = {
+ .data = mldsa_44_pubkey,
+ .length = sizeof(mldsa_44_pubkey),
+ },
},
{
.name = "mldsa_44_keygen (deterministic)",
diff --git a/app/test/test_cryptodev_ml_kem_test_vectors.h
b/app/test/test_cryptodev_ml_kem_test_vectors.h
index 8294acc29e..a1d727b969 100644
--- a/app/test/test_cryptodev_ml_kem_test_vectors.h
+++ b/app/test/test_cryptodev_ml_kem_test_vectors.h
@@ -785,6 +785,14 @@ struct crypto_testsuite_mlkem_params
mlkem_keygen_test_vectors[] = {
.data = mlkem_512_z,
.length = sizeof(mlkem_512_z),
},
+ .dk = {
+ .data = mlkem_512_dk,
+ .length = sizeof(mlkem_512_dk),
+ },
+ .ek = {
+ .data = mlkem_512_ek,
+ .length = sizeof(mlkem_512_ek),
+ }
},
{
.name = "mlkem_512_keygen (deterministic)",
--
2.37.1