* [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism
@ 2019-04-26 19:31 Fiona Trahe
2019-04-26 19:31 ` Fiona Trahe
2019-04-30 7:20 ` Akhil Goyal
0 siblings, 2 replies; 7+ messages in thread
From: Fiona Trahe @ 2019-04-26 19:31 UTC (permalink / raw)
To: dev
Cc: thomas, akhil.goyal, arkadiuszx.kusztal, bernard.iremonger,
anoobj, Fiona Trahe
Added NULL algo tests into loop test mechanism used
by block cipher tests as easier to extend there.
Included chain, cipher-only and auth-only use-cases.
Extended to cover out-of-place use-cases and use-cases
where data length is not an 8-byte multiple.
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
---
app/test/test_cryptodev.c | 82 ++++++--
app/test/test_cryptodev_aes_test_vectors.h | 277 +++++++++++++++++++++++++++-
app/test/test_cryptodev_blockcipher.c | 9 +-
app/test/test_cryptodev_blockcipher.h | 1 +
app/test/test_cryptodev_hash_test_vectors.h | 56 +++++-
5 files changed, 406 insertions(+), 19 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 9f31aaa7e..2b76f3ffc 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -1673,6 +1673,64 @@ test_authonly_qat_all(void)
return TEST_SUCCESS;
}
+
+static int
+test_AES_chain_null_all(void)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ int status;
+
+ status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+ ts_params->op_mpool,
+ ts_params->session_mpool, ts_params->session_priv_mpool,
+ ts_params->valid_devs[0],
+ rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
+ BLKCIPHER_AES_CHAIN_TYPE);
+
+ TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_cipheronly_null_all(void)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ int status;
+
+ status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+ ts_params->op_mpool,
+ ts_params->session_mpool, ts_params->session_priv_mpool,
+ ts_params->valid_devs[0],
+ rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
+ BLKCIPHER_AES_CIPHERONLY_TYPE);
+
+ TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+ return TEST_SUCCESS;
+}
+
+static int
+test_authonly_null_all(void)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ int status;
+
+ status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+ ts_params->op_mpool,
+ ts_params->session_mpool, ts_params->session_priv_mpool,
+ ts_params->valid_devs[0],
+ rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
+ BLKCIPHER_AUTHONLY_TYPE);
+
+ TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+ return TEST_SUCCESS;
+}
+
static int
test_AES_chain_mb_all(void)
{
@@ -9257,15 +9315,9 @@ static struct unit_test_suite cryptodev_qat_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
test_MD5_HMAC_verify_case_2),
- /** NULL tests */
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_only_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_only_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_auth_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_cipher_operation),
+ /** NULL algo tests done in chain_all,
+ * cipheronly and authonly suites
+ */
/** KASUMI tests */
TEST_CASE_ST(ut_setup, ut_teardown,
@@ -10304,17 +10356,15 @@ static struct unit_test_suite cryptodev_null_testsuite = {
.teardown = testsuite_teardown,
.unit_test_cases = {
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_only_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_only_operation),
+ test_null_invalid_operation),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_auth_operation),
+ test_null_burst_operation),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_cipher_operation),
+ test_AES_chain_null_all),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_invalid_operation),
+ test_AES_cipheronly_null_all),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_burst_operation),
+ test_authonly_null_all),
TEST_CASES_END() /**< NULL terminate unit test array */
}
diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/app/test/test_cryptodev_aes_test_vectors.h
index e5b9da4fa..ee4fdc9a7 100644
--- a/app/test/test_cryptodev_aes_test_vectors.h
+++ b/app/test/test_cryptodev_aes_test_vectors.h
@@ -221,6 +221,141 @@ static const uint8_t ciphertext512_aes128cbc[] = {
0xBB, 0xFF, 0xAE, 0xB5, 0x99, 0x6E, 0xCB, 0x0C
};
+/* NULL cipher NULL auth 8-byte multiple test vector */
+static const struct blockcipher_test_data null_test_data_chain_x8_multiple = {
+ .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
+ .cipher_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .iv = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+ },
+ .len = 16
+ },
+ .plaintext = {
+ .data = plaintext_aes_common,
+ .len = 512
+ },
+ .ciphertext = {
+ .data = plaintext_aes_common,
+ .len = 512
+ },
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
+ 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
+ 0xDE, 0xF4, 0xDE, 0xAD
+ },
+ .len = 20
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
+/* NULL cipher NULL auth 4-byte multiple test vector */
+static const struct blockcipher_test_data null_test_data_chain_x4_multiple = {
+ .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
+ .cipher_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .iv = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+ },
+ .len = 16
+ },
+ .plaintext = {
+ .data = plaintext_aes128ctr,
+ .len = 20
+ },
+ .ciphertext = {
+ .data = plaintext_aes128ctr,
+ .len = 20
+ },
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
+ 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
+ 0xDE, 0xF4, 0xDE, 0xAD
+ },
+ .len = 20
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
+/* NULL cipher NULL auth 1-byte multiple test vector */
+static const struct blockcipher_test_data null_test_data_chain_x1_multiple = {
+ .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
+ .cipher_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .iv = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+ },
+ .len = 16
+ },
+ .plaintext = {
+ .data = plaintext_aes128ctr,
+ .len = 21
+ },
+ .ciphertext = {
+ .data = plaintext_aes128ctr,
+ .len = 21
+ },
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
+ 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
+ 0xDE, 0xF4, 0xDE, 0xAD
+ },
+ .len = 20
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
/* AES128-CTR-SHA1 test vector */
static const struct blockcipher_test_data aes_test_data_1 = {
.crypto_algo = RTE_CRYPTO_CIPHER_AES_CTR,
@@ -1822,6 +1957,90 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
},
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x8byte",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte - OOP",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x8byte - OOP",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x4byte",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x4byte - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x1byte",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte - OOP",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x1byte - OOP",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
};
static const struct blockcipher_test_case aes_cipheronly_test_cases[] = {
@@ -2125,7 +2344,63 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = {
.test_data = &aes_test_data_xts_key_64_pt_48,
.op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
- }
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x8 - encryption",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x8 - decryption",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - encryption",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - decryption",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - encryption - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - decryption - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x1 - encryption",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x1 - decryption",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
};
static const struct blockcipher_test_case aes_docsis_test_cases[] = {
diff --git a/app/test/test_cryptodev_blockcipher.c b/app/test/test_cryptodev_blockcipher.c
index cdbdcce1e..b8dcc3962 100644
--- a/app/test/test_cryptodev_blockcipher.c
+++ b/app/test/test_cryptodev_blockcipher.c
@@ -77,6 +77,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,
RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
int octeontx_pmd = rte_cryptodev_driver_id_get(
RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
+ int null_pmd = rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD));
int nb_segs = 1;
uint32_t nb_iterates = 0;
@@ -122,7 +124,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,
driver_id == mrvl_pmd ||
driver_id == ccp_pmd ||
driver_id == virtio_pmd ||
- driver_id == octeontx_pmd) { /* Fall through */
+ driver_id == octeontx_pmd ||
+ driver_id == null_pmd) { /* Fall through */
digest_len = tdata->digest.len;
} else if (driver_id == aesni_mb_pmd ||
driver_id == scheduler_pmd) {
@@ -712,6 +715,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool,
RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
int octeontx_pmd = rte_cryptodev_driver_id_get(
RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
+ int null_pmd = rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD));
switch (test_type) {
case BLKCIPHER_AES_CHAIN_TYPE:
@@ -782,6 +787,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool,
target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO;
else if (driver_id == octeontx_pmd)
target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX;
+ else if (driver_id == null_pmd)
+ target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL;
else
TEST_ASSERT(0, "Unrecognized cryptodev type");
diff --git a/app/test/test_cryptodev_blockcipher.h b/app/test/test_cryptodev_blockcipher.h
index 060d10498..3d4b97533 100644
--- a/app/test/test_cryptodev_blockcipher.h
+++ b/app/test/test_cryptodev_blockcipher.h
@@ -31,6 +31,7 @@
#define BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO 0x0200 /* VIRTIO flag */
#define BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR 0x0400 /* CAAM_JR flag */
#define BLOCKCIPHER_TEST_TARGET_PMD_CCP 0x0800 /* CCP flag */
+#define BLOCKCIPHER_TEST_TARGET_PMD_NULL 0x1000 /* NULL flag */
#define BLOCKCIPHER_TEST_OP_CIPHER (BLOCKCIPHER_TEST_OP_ENCRYPT | \
BLOCKCIPHER_TEST_OP_DECRYPT)
diff --git a/app/test/test_cryptodev_hash_test_vectors.h b/app/test/test_cryptodev_hash_test_vectors.h
index d3a26609c..6f201c08a 100644
--- a/app/test/test_cryptodev_hash_test_vectors.h
+++ b/app/test/test_cryptodev_hash_test_vectors.h
@@ -358,6 +358,31 @@ cmac_test_vector = {
};
static const struct blockcipher_test_data
+null_auth_test_vector = {
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .ciphertext = { /* arbitrary data - shouldn't be used */
+ .data = plaintext_hash,
+ .len = 512
+ },
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
+static const struct blockcipher_test_data
cmac_test_vector_12 = {
.auth_algo = RTE_CRYPTO_AUTH_AES_CMAC,
.ciphertext = {
@@ -741,7 +766,36 @@ static const struct blockcipher_test_case hash_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB |
BLOCKCIPHER_TEST_TARGET_PMD_QAT
- }
+ },
+ {
+ .test_descr = "NULL algo - auth generate",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL algo - auth verify",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL algo - auth generate - OOP",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL algo - auth verify - OOP",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+
};
#endif /* TEST_CRYPTODEV_HASH_TEST_VECTORS_H_ */
--
2.13.6
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism
2019-04-26 19:31 [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism Fiona Trahe
@ 2019-04-26 19:31 ` Fiona Trahe
2019-04-30 7:20 ` Akhil Goyal
1 sibling, 0 replies; 7+ messages in thread
From: Fiona Trahe @ 2019-04-26 19:31 UTC (permalink / raw)
To: dev
Cc: thomas, akhil.goyal, arkadiuszx.kusztal, bernard.iremonger,
anoobj, Fiona Trahe
Added NULL algo tests into loop test mechanism used
by block cipher tests as easier to extend there.
Included chain, cipher-only and auth-only use-cases.
Extended to cover out-of-place use-cases and use-cases
where data length is not an 8-byte multiple.
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
---
app/test/test_cryptodev.c | 82 ++++++--
app/test/test_cryptodev_aes_test_vectors.h | 277 +++++++++++++++++++++++++++-
app/test/test_cryptodev_blockcipher.c | 9 +-
app/test/test_cryptodev_blockcipher.h | 1 +
app/test/test_cryptodev_hash_test_vectors.h | 56 +++++-
5 files changed, 406 insertions(+), 19 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 9f31aaa7e..2b76f3ffc 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -1673,6 +1673,64 @@ test_authonly_qat_all(void)
return TEST_SUCCESS;
}
+
+static int
+test_AES_chain_null_all(void)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ int status;
+
+ status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+ ts_params->op_mpool,
+ ts_params->session_mpool, ts_params->session_priv_mpool,
+ ts_params->valid_devs[0],
+ rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
+ BLKCIPHER_AES_CHAIN_TYPE);
+
+ TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_cipheronly_null_all(void)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ int status;
+
+ status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+ ts_params->op_mpool,
+ ts_params->session_mpool, ts_params->session_priv_mpool,
+ ts_params->valid_devs[0],
+ rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
+ BLKCIPHER_AES_CIPHERONLY_TYPE);
+
+ TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+ return TEST_SUCCESS;
+}
+
+static int
+test_authonly_null_all(void)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ int status;
+
+ status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+ ts_params->op_mpool,
+ ts_params->session_mpool, ts_params->session_priv_mpool,
+ ts_params->valid_devs[0],
+ rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
+ BLKCIPHER_AUTHONLY_TYPE);
+
+ TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+ return TEST_SUCCESS;
+}
+
static int
test_AES_chain_mb_all(void)
{
@@ -9257,15 +9315,9 @@ static struct unit_test_suite cryptodev_qat_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
test_MD5_HMAC_verify_case_2),
- /** NULL tests */
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_only_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_only_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_auth_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_cipher_operation),
+ /** NULL algo tests done in chain_all,
+ * cipheronly and authonly suites
+ */
/** KASUMI tests */
TEST_CASE_ST(ut_setup, ut_teardown,
@@ -10304,17 +10356,15 @@ static struct unit_test_suite cryptodev_null_testsuite = {
.teardown = testsuite_teardown,
.unit_test_cases = {
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_only_operation),
- TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_only_operation),
+ test_null_invalid_operation),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_cipher_auth_operation),
+ test_null_burst_operation),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_auth_cipher_operation),
+ test_AES_chain_null_all),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_invalid_operation),
+ test_AES_cipheronly_null_all),
TEST_CASE_ST(ut_setup, ut_teardown,
- test_null_burst_operation),
+ test_authonly_null_all),
TEST_CASES_END() /**< NULL terminate unit test array */
}
diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/app/test/test_cryptodev_aes_test_vectors.h
index e5b9da4fa..ee4fdc9a7 100644
--- a/app/test/test_cryptodev_aes_test_vectors.h
+++ b/app/test/test_cryptodev_aes_test_vectors.h
@@ -221,6 +221,141 @@ static const uint8_t ciphertext512_aes128cbc[] = {
0xBB, 0xFF, 0xAE, 0xB5, 0x99, 0x6E, 0xCB, 0x0C
};
+/* NULL cipher NULL auth 8-byte multiple test vector */
+static const struct blockcipher_test_data null_test_data_chain_x8_multiple = {
+ .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
+ .cipher_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .iv = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+ },
+ .len = 16
+ },
+ .plaintext = {
+ .data = plaintext_aes_common,
+ .len = 512
+ },
+ .ciphertext = {
+ .data = plaintext_aes_common,
+ .len = 512
+ },
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
+ 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
+ 0xDE, 0xF4, 0xDE, 0xAD
+ },
+ .len = 20
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
+/* NULL cipher NULL auth 4-byte multiple test vector */
+static const struct blockcipher_test_data null_test_data_chain_x4_multiple = {
+ .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
+ .cipher_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .iv = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+ },
+ .len = 16
+ },
+ .plaintext = {
+ .data = plaintext_aes128ctr,
+ .len = 20
+ },
+ .ciphertext = {
+ .data = plaintext_aes128ctr,
+ .len = 20
+ },
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
+ 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
+ 0xDE, 0xF4, 0xDE, 0xAD
+ },
+ .len = 20
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
+/* NULL cipher NULL auth 1-byte multiple test vector */
+static const struct blockcipher_test_data null_test_data_chain_x1_multiple = {
+ .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
+ .cipher_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .iv = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+ },
+ .len = 16
+ },
+ .plaintext = {
+ .data = plaintext_aes128ctr,
+ .len = 21
+ },
+ .ciphertext = {
+ .data = plaintext_aes128ctr,
+ .len = 21
+ },
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
+ 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
+ 0xDE, 0xF4, 0xDE, 0xAD
+ },
+ .len = 20
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
/* AES128-CTR-SHA1 test vector */
static const struct blockcipher_test_data aes_test_data_1 = {
.crypto_algo = RTE_CRYPTO_CIPHER_AES_CTR,
@@ -1822,6 +1957,90 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
},
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x8byte",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte - OOP",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x8byte - OOP",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x4byte",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x4byte - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x1byte",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte - OOP",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt x1byte - OOP",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
};
static const struct blockcipher_test_case aes_cipheronly_test_cases[] = {
@@ -2125,7 +2344,63 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = {
.test_data = &aes_test_data_xts_key_64_pt_48,
.op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
- }
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x8 - encryption",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x8 - decryption",
+ .test_data = &null_test_data_chain_x8_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - encryption",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - decryption",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - encryption - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x4 - decryption - OOP",
+ .test_data = &null_test_data_chain_x4_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x1 - encryption",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "cipher-only - NULL algo - x1 - decryption",
+ .test_data = &null_test_data_chain_x1_multiple,
+ .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
};
static const struct blockcipher_test_case aes_docsis_test_cases[] = {
diff --git a/app/test/test_cryptodev_blockcipher.c b/app/test/test_cryptodev_blockcipher.c
index cdbdcce1e..b8dcc3962 100644
--- a/app/test/test_cryptodev_blockcipher.c
+++ b/app/test/test_cryptodev_blockcipher.c
@@ -77,6 +77,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,
RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
int octeontx_pmd = rte_cryptodev_driver_id_get(
RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
+ int null_pmd = rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD));
int nb_segs = 1;
uint32_t nb_iterates = 0;
@@ -122,7 +124,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,
driver_id == mrvl_pmd ||
driver_id == ccp_pmd ||
driver_id == virtio_pmd ||
- driver_id == octeontx_pmd) { /* Fall through */
+ driver_id == octeontx_pmd ||
+ driver_id == null_pmd) { /* Fall through */
digest_len = tdata->digest.len;
} else if (driver_id == aesni_mb_pmd ||
driver_id == scheduler_pmd) {
@@ -712,6 +715,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool,
RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
int octeontx_pmd = rte_cryptodev_driver_id_get(
RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
+ int null_pmd = rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NULL_PMD));
switch (test_type) {
case BLKCIPHER_AES_CHAIN_TYPE:
@@ -782,6 +787,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool,
target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO;
else if (driver_id == octeontx_pmd)
target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX;
+ else if (driver_id == null_pmd)
+ target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL;
else
TEST_ASSERT(0, "Unrecognized cryptodev type");
diff --git a/app/test/test_cryptodev_blockcipher.h b/app/test/test_cryptodev_blockcipher.h
index 060d10498..3d4b97533 100644
--- a/app/test/test_cryptodev_blockcipher.h
+++ b/app/test/test_cryptodev_blockcipher.h
@@ -31,6 +31,7 @@
#define BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO 0x0200 /* VIRTIO flag */
#define BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR 0x0400 /* CAAM_JR flag */
#define BLOCKCIPHER_TEST_TARGET_PMD_CCP 0x0800 /* CCP flag */
+#define BLOCKCIPHER_TEST_TARGET_PMD_NULL 0x1000 /* NULL flag */
#define BLOCKCIPHER_TEST_OP_CIPHER (BLOCKCIPHER_TEST_OP_ENCRYPT | \
BLOCKCIPHER_TEST_OP_DECRYPT)
diff --git a/app/test/test_cryptodev_hash_test_vectors.h b/app/test/test_cryptodev_hash_test_vectors.h
index d3a26609c..6f201c08a 100644
--- a/app/test/test_cryptodev_hash_test_vectors.h
+++ b/app/test/test_cryptodev_hash_test_vectors.h
@@ -358,6 +358,31 @@ cmac_test_vector = {
};
static const struct blockcipher_test_data
+null_auth_test_vector = {
+ .auth_algo = RTE_CRYPTO_AUTH_NULL,
+ .ciphertext = { /* arbitrary data - shouldn't be used */
+ .data = plaintext_hash,
+ .len = 512
+ },
+ .auth_key = { /* arbitrary data - shouldn't be used */
+ .data = {
+ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
+ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
+ },
+ .len = 16
+ },
+ .digest = {
+ .data = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ },
+ .len = 20,
+ .truncated_len = 12
+ }
+};
+
+static const struct blockcipher_test_data
cmac_test_vector_12 = {
.auth_algo = RTE_CRYPTO_AUTH_AES_CMAC,
.ciphertext = {
@@ -741,7 +766,36 @@ static const struct blockcipher_test_case hash_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB |
BLOCKCIPHER_TEST_TARGET_PMD_QAT
- }
+ },
+ {
+ .test_descr = "NULL algo - auth generate",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL algo - auth verify",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL algo - auth generate - OOP",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+ {
+ .test_descr = "NULL algo - auth verify - OOP",
+ .test_data = &null_auth_test_vector,
+ .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
+ .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
+ .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ },
+
};
#endif /* TEST_CRYPTODEV_HASH_TEST_VECTORS_H_ */
--
2.13.6
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism
2019-04-26 19:31 [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism Fiona Trahe
2019-04-26 19:31 ` Fiona Trahe
@ 2019-04-30 7:20 ` Akhil Goyal
2019-04-30 7:20 ` Akhil Goyal
2019-04-30 9:54 ` Trahe, Fiona
1 sibling, 2 replies; 7+ messages in thread
From: Akhil Goyal @ 2019-04-30 7:20 UTC (permalink / raw)
To: Fiona Trahe, dev; +Cc: thomas, arkadiuszx.kusztal, bernard.iremonger, anoobj
Hi Fiona,
I believe this patch is for 19.08, we normally do not accept such changes in RC4.
Also the patch
http://patches.dpdk.org/patch/53117/
looks to be meaningful if this patch is accepted.
Do you want we to apply the fix in driver in this release and add the test cases in the next release, or should I defer both in next release.
Thanks,
Akhil
> -----Original Message-----
> From: Fiona Trahe <fiona.trahe@intel.com>
> Sent: Saturday, April 27, 2019 1:02 AM
> To: dev@dpdk.org
> Cc: thomas@monjalon.net; Akhil Goyal <akhil.goyal@nxp.com>;
> arkadiuszx.kusztal@intel.com; bernard.iremonger@intel.com;
> anoobj@marvell.com; Fiona Trahe <fiona.trahe@intel.com>
> Subject: [PATCH] test/crypto: added NULL algo tests to loop test mechanism
>
> Added NULL algo tests into loop test mechanism used
> by block cipher tests as easier to extend there.
> Included chain, cipher-only and auth-only use-cases.
> Extended to cover out-of-place use-cases and use-cases
> where data length is not an 8-byte multiple.
>
> Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
> ---
> app/test/test_cryptodev.c | 82 ++++++--
> app/test/test_cryptodev_aes_test_vectors.h | 277
> +++++++++++++++++++++++++++-
> app/test/test_cryptodev_blockcipher.c | 9 +-
> app/test/test_cryptodev_blockcipher.h | 1 +
> app/test/test_cryptodev_hash_test_vectors.h | 56 +++++-
> 5 files changed, 406 insertions(+), 19 deletions(-)
>
> diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
> index 9f31aaa7e..2b76f3ffc 100644
> --- a/app/test/test_cryptodev.c
> +++ b/app/test/test_cryptodev.c
> @@ -1673,6 +1673,64 @@ test_authonly_qat_all(void)
>
> return TEST_SUCCESS;
> }
> +
> +static int
> +test_AES_chain_null_all(void)
> +{
> + struct crypto_testsuite_params *ts_params = &testsuite_params;
> + int status;
> +
> + status = test_blockcipher_all_tests(ts_params->mbuf_pool,
> + ts_params->op_mpool,
> + ts_params->session_mpool, ts_params->session_priv_mpool,
> + ts_params->valid_devs[0],
> + rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
> + BLKCIPHER_AES_CHAIN_TYPE);
> +
> + TEST_ASSERT_EQUAL(status, 0, "Test failed");
> +
> + return TEST_SUCCESS;
> +}
> +
> +static int
> +test_AES_cipheronly_null_all(void)
> +{
> + struct crypto_testsuite_params *ts_params = &testsuite_params;
> + int status;
> +
> + status = test_blockcipher_all_tests(ts_params->mbuf_pool,
> + ts_params->op_mpool,
> + ts_params->session_mpool, ts_params->session_priv_mpool,
> + ts_params->valid_devs[0],
> + rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
> + BLKCIPHER_AES_CIPHERONLY_TYPE);
> +
> + TEST_ASSERT_EQUAL(status, 0, "Test failed");
> +
> + return TEST_SUCCESS;
> +}
> +
> +static int
> +test_authonly_null_all(void)
> +{
> + struct crypto_testsuite_params *ts_params = &testsuite_params;
> + int status;
> +
> + status = test_blockcipher_all_tests(ts_params->mbuf_pool,
> + ts_params->op_mpool,
> + ts_params->session_mpool, ts_params->session_priv_mpool,
> + ts_params->valid_devs[0],
> + rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
> + BLKCIPHER_AUTHONLY_TYPE);
> +
> + TEST_ASSERT_EQUAL(status, 0, "Test failed");
> +
> + return TEST_SUCCESS;
> +}
> +
> static int
> test_AES_chain_mb_all(void)
> {
> @@ -9257,15 +9315,9 @@ static struct unit_test_suite cryptodev_qat_testsuite
> = {
> TEST_CASE_ST(ut_setup, ut_teardown,
> test_MD5_HMAC_verify_case_2),
>
> - /** NULL tests */
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_only_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_only_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_auth_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_cipher_operation),
> + /** NULL algo tests done in chain_all,
> + * cipheronly and authonly suites
> + */
>
> /** KASUMI tests */
> TEST_CASE_ST(ut_setup, ut_teardown,
> @@ -10304,17 +10356,15 @@ static struct unit_test_suite
> cryptodev_null_testsuite = {
> .teardown = testsuite_teardown,
> .unit_test_cases = {
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_only_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_only_operation),
> + test_null_invalid_operation),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_auth_operation),
> + test_null_burst_operation),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_cipher_operation),
> + test_AES_chain_null_all),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_invalid_operation),
> + test_AES_cipheronly_null_all),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_burst_operation),
> + test_authonly_null_all),
>
> TEST_CASES_END() /**< NULL terminate unit test array */
> }
> diff --git a/app/test/test_cryptodev_aes_test_vectors.h
> b/app/test/test_cryptodev_aes_test_vectors.h
> index e5b9da4fa..ee4fdc9a7 100644
> --- a/app/test/test_cryptodev_aes_test_vectors.h
> +++ b/app/test/test_cryptodev_aes_test_vectors.h
> @@ -221,6 +221,141 @@ static const uint8_t ciphertext512_aes128cbc[] = {
> 0xBB, 0xFF, 0xAE, 0xB5, 0x99, 0x6E, 0xCB, 0x0C
> };
>
> +/* NULL cipher NULL auth 8-byte multiple test vector */
> +static const struct blockcipher_test_data null_test_data_chain_x8_multiple = {
> + .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
> + .cipher_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .iv = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
> + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
> + },
> + .len = 16
> + },
> + .plaintext = {
> + .data = plaintext_aes_common,
> + .len = 512
> + },
> + .ciphertext = {
> + .data = plaintext_aes_common,
> + .len = 512
> + },
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
> + 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
> + 0xDE, 0xF4, 0xDE, 0xAD
> + },
> + .len = 20
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> +/* NULL cipher NULL auth 4-byte multiple test vector */
> +static const struct blockcipher_test_data null_test_data_chain_x4_multiple = {
> + .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
> + .cipher_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .iv = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
> + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
> + },
> + .len = 16
> + },
> + .plaintext = {
> + .data = plaintext_aes128ctr,
> + .len = 20
> + },
> + .ciphertext = {
> + .data = plaintext_aes128ctr,
> + .len = 20
> + },
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
> + 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
> + 0xDE, 0xF4, 0xDE, 0xAD
> + },
> + .len = 20
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> +/* NULL cipher NULL auth 1-byte multiple test vector */
> +static const struct blockcipher_test_data null_test_data_chain_x1_multiple = {
> + .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
> + .cipher_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .iv = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
> + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
> + },
> + .len = 16
> + },
> + .plaintext = {
> + .data = plaintext_aes128ctr,
> + .len = 21
> + },
> + .ciphertext = {
> + .data = plaintext_aes128ctr,
> + .len = 21
> + },
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
> + 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
> + 0xDE, 0xF4, 0xDE, 0xAD
> + },
> + .len = 20
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> /* AES128-CTR-SHA1 test vector */
> static const struct blockcipher_test_data aes_test_data_1 = {
> .crypto_algo = RTE_CRYPTO_CIPHER_AES_CTR,
> @@ -1822,6 +1957,90 @@ static const struct blockcipher_test_case
> aes_chain_test_cases[] = {
> BLOCKCIPHER_TEST_TARGET_PMD_CCP |
> BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
> },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x8byte",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte -
> OOP",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x8byte - OOP",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x4byte",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte -
> OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x4byte - OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x1byte",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte -
> OOP",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x1byte - OOP",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> };
>
> static const struct blockcipher_test_case aes_cipheronly_test_cases[] = {
> @@ -2125,7 +2344,63 @@ static const struct blockcipher_test_case
> aes_cipheronly_test_cases[] = {
> .test_data = &aes_test_data_xts_key_64_pt_48,
> .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> - }
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x8 - encryption",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x8 - decryption",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - encryption",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - decryption",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - encryption - OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - decryption - OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x1 - encryption",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x1 - decryption",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> };
>
> static const struct blockcipher_test_case aes_docsis_test_cases[] = {
> diff --git a/app/test/test_cryptodev_blockcipher.c
> b/app/test/test_cryptodev_blockcipher.c
> index cdbdcce1e..b8dcc3962 100644
> --- a/app/test/test_cryptodev_blockcipher.c
> +++ b/app/test/test_cryptodev_blockcipher.c
> @@ -77,6 +77,8 @@ test_blockcipher_one_case(const struct
> blockcipher_test_case *t,
> RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
> int octeontx_pmd = rte_cryptodev_driver_id_get(
> RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
> + int null_pmd = rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD));
>
> int nb_segs = 1;
> uint32_t nb_iterates = 0;
> @@ -122,7 +124,8 @@ test_blockcipher_one_case(const struct
> blockcipher_test_case *t,
> driver_id == mrvl_pmd ||
> driver_id == ccp_pmd ||
> driver_id == virtio_pmd ||
> - driver_id == octeontx_pmd) { /* Fall through */
> + driver_id == octeontx_pmd ||
> + driver_id == null_pmd) { /* Fall through */
> digest_len = tdata->digest.len;
> } else if (driver_id == aesni_mb_pmd ||
> driver_id == scheduler_pmd) {
> @@ -712,6 +715,8 @@ test_blockcipher_all_tests(struct rte_mempool
> *mbuf_pool,
> RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
> int octeontx_pmd = rte_cryptodev_driver_id_get(
> RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
> + int null_pmd = rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD));
>
> switch (test_type) {
> case BLKCIPHER_AES_CHAIN_TYPE:
> @@ -782,6 +787,8 @@ test_blockcipher_all_tests(struct rte_mempool
> *mbuf_pool,
> target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO;
> else if (driver_id == octeontx_pmd)
> target_pmd_mask =
> BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX;
> + else if (driver_id == null_pmd)
> + target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL;
> else
> TEST_ASSERT(0, "Unrecognized cryptodev type");
>
> diff --git a/app/test/test_cryptodev_blockcipher.h
> b/app/test/test_cryptodev_blockcipher.h
> index 060d10498..3d4b97533 100644
> --- a/app/test/test_cryptodev_blockcipher.h
> +++ b/app/test/test_cryptodev_blockcipher.h
> @@ -31,6 +31,7 @@
> #define BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO 0x0200 /* VIRTIO flag
> */
> #define BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR 0x0400 /* CAAM_JR
> flag */
> #define BLOCKCIPHER_TEST_TARGET_PMD_CCP 0x0800 /* CCP
> flag */
> +#define BLOCKCIPHER_TEST_TARGET_PMD_NULL 0x1000 /* NULL flag
> */
>
> #define BLOCKCIPHER_TEST_OP_CIPHER
> (BLOCKCIPHER_TEST_OP_ENCRYPT | \
> BLOCKCIPHER_TEST_OP_DECRYPT)
> diff --git a/app/test/test_cryptodev_hash_test_vectors.h
> b/app/test/test_cryptodev_hash_test_vectors.h
> index d3a26609c..6f201c08a 100644
> --- a/app/test/test_cryptodev_hash_test_vectors.h
> +++ b/app/test/test_cryptodev_hash_test_vectors.h
> @@ -358,6 +358,31 @@ cmac_test_vector = {
> };
>
> static const struct blockcipher_test_data
> +null_auth_test_vector = {
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .ciphertext = { /* arbitrary data - shouldn't be used */
> + .data = plaintext_hash,
> + .len = 512
> + },
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> +static const struct blockcipher_test_data
> cmac_test_vector_12 = {
> .auth_algo = RTE_CRYPTO_AUTH_AES_CMAC,
> .ciphertext = {
> @@ -741,7 +766,36 @@ static const struct blockcipher_test_case
> hash_test_cases[] = {
> .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
> .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB |
> BLOCKCIPHER_TEST_TARGET_PMD_QAT
> - }
> + },
> + {
> + .test_descr = "NULL algo - auth generate",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL algo - auth verify",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL algo - auth generate - OOP",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL algo - auth verify - OOP",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> +
> };
>
> #endif /* TEST_CRYPTODEV_HASH_TEST_VECTORS_H_ */
> --
> 2.13.6
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism
2019-04-30 7:20 ` Akhil Goyal
@ 2019-04-30 7:20 ` Akhil Goyal
2019-04-30 9:54 ` Trahe, Fiona
1 sibling, 0 replies; 7+ messages in thread
From: Akhil Goyal @ 2019-04-30 7:20 UTC (permalink / raw)
To: Fiona Trahe, dev; +Cc: thomas, arkadiuszx.kusztal, bernard.iremonger, anoobj
Hi Fiona,
I believe this patch is for 19.08, we normally do not accept such changes in RC4.
Also the patch
http://patches.dpdk.org/patch/53117/
looks to be meaningful if this patch is accepted.
Do you want we to apply the fix in driver in this release and add the test cases in the next release, or should I defer both in next release.
Thanks,
Akhil
> -----Original Message-----
> From: Fiona Trahe <fiona.trahe@intel.com>
> Sent: Saturday, April 27, 2019 1:02 AM
> To: dev@dpdk.org
> Cc: thomas@monjalon.net; Akhil Goyal <akhil.goyal@nxp.com>;
> arkadiuszx.kusztal@intel.com; bernard.iremonger@intel.com;
> anoobj@marvell.com; Fiona Trahe <fiona.trahe@intel.com>
> Subject: [PATCH] test/crypto: added NULL algo tests to loop test mechanism
>
> Added NULL algo tests into loop test mechanism used
> by block cipher tests as easier to extend there.
> Included chain, cipher-only and auth-only use-cases.
> Extended to cover out-of-place use-cases and use-cases
> where data length is not an 8-byte multiple.
>
> Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
> ---
> app/test/test_cryptodev.c | 82 ++++++--
> app/test/test_cryptodev_aes_test_vectors.h | 277
> +++++++++++++++++++++++++++-
> app/test/test_cryptodev_blockcipher.c | 9 +-
> app/test/test_cryptodev_blockcipher.h | 1 +
> app/test/test_cryptodev_hash_test_vectors.h | 56 +++++-
> 5 files changed, 406 insertions(+), 19 deletions(-)
>
> diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
> index 9f31aaa7e..2b76f3ffc 100644
> --- a/app/test/test_cryptodev.c
> +++ b/app/test/test_cryptodev.c
> @@ -1673,6 +1673,64 @@ test_authonly_qat_all(void)
>
> return TEST_SUCCESS;
> }
> +
> +static int
> +test_AES_chain_null_all(void)
> +{
> + struct crypto_testsuite_params *ts_params = &testsuite_params;
> + int status;
> +
> + status = test_blockcipher_all_tests(ts_params->mbuf_pool,
> + ts_params->op_mpool,
> + ts_params->session_mpool, ts_params->session_priv_mpool,
> + ts_params->valid_devs[0],
> + rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
> + BLKCIPHER_AES_CHAIN_TYPE);
> +
> + TEST_ASSERT_EQUAL(status, 0, "Test failed");
> +
> + return TEST_SUCCESS;
> +}
> +
> +static int
> +test_AES_cipheronly_null_all(void)
> +{
> + struct crypto_testsuite_params *ts_params = &testsuite_params;
> + int status;
> +
> + status = test_blockcipher_all_tests(ts_params->mbuf_pool,
> + ts_params->op_mpool,
> + ts_params->session_mpool, ts_params->session_priv_mpool,
> + ts_params->valid_devs[0],
> + rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
> + BLKCIPHER_AES_CIPHERONLY_TYPE);
> +
> + TEST_ASSERT_EQUAL(status, 0, "Test failed");
> +
> + return TEST_SUCCESS;
> +}
> +
> +static int
> +test_authonly_null_all(void)
> +{
> + struct crypto_testsuite_params *ts_params = &testsuite_params;
> + int status;
> +
> + status = test_blockcipher_all_tests(ts_params->mbuf_pool,
> + ts_params->op_mpool,
> + ts_params->session_mpool, ts_params->session_priv_mpool,
> + ts_params->valid_devs[0],
> + rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD)),
> + BLKCIPHER_AUTHONLY_TYPE);
> +
> + TEST_ASSERT_EQUAL(status, 0, "Test failed");
> +
> + return TEST_SUCCESS;
> +}
> +
> static int
> test_AES_chain_mb_all(void)
> {
> @@ -9257,15 +9315,9 @@ static struct unit_test_suite cryptodev_qat_testsuite
> = {
> TEST_CASE_ST(ut_setup, ut_teardown,
> test_MD5_HMAC_verify_case_2),
>
> - /** NULL tests */
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_only_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_only_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_auth_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_cipher_operation),
> + /** NULL algo tests done in chain_all,
> + * cipheronly and authonly suites
> + */
>
> /** KASUMI tests */
> TEST_CASE_ST(ut_setup, ut_teardown,
> @@ -10304,17 +10356,15 @@ static struct unit_test_suite
> cryptodev_null_testsuite = {
> .teardown = testsuite_teardown,
> .unit_test_cases = {
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_only_operation),
> - TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_only_operation),
> + test_null_invalid_operation),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_cipher_auth_operation),
> + test_null_burst_operation),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_auth_cipher_operation),
> + test_AES_chain_null_all),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_invalid_operation),
> + test_AES_cipheronly_null_all),
> TEST_CASE_ST(ut_setup, ut_teardown,
> - test_null_burst_operation),
> + test_authonly_null_all),
>
> TEST_CASES_END() /**< NULL terminate unit test array */
> }
> diff --git a/app/test/test_cryptodev_aes_test_vectors.h
> b/app/test/test_cryptodev_aes_test_vectors.h
> index e5b9da4fa..ee4fdc9a7 100644
> --- a/app/test/test_cryptodev_aes_test_vectors.h
> +++ b/app/test/test_cryptodev_aes_test_vectors.h
> @@ -221,6 +221,141 @@ static const uint8_t ciphertext512_aes128cbc[] = {
> 0xBB, 0xFF, 0xAE, 0xB5, 0x99, 0x6E, 0xCB, 0x0C
> };
>
> +/* NULL cipher NULL auth 8-byte multiple test vector */
> +static const struct blockcipher_test_data null_test_data_chain_x8_multiple = {
> + .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
> + .cipher_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .iv = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
> + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
> + },
> + .len = 16
> + },
> + .plaintext = {
> + .data = plaintext_aes_common,
> + .len = 512
> + },
> + .ciphertext = {
> + .data = plaintext_aes_common,
> + .len = 512
> + },
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
> + 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
> + 0xDE, 0xF4, 0xDE, 0xAD
> + },
> + .len = 20
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> +/* NULL cipher NULL auth 4-byte multiple test vector */
> +static const struct blockcipher_test_data null_test_data_chain_x4_multiple = {
> + .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
> + .cipher_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .iv = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
> + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
> + },
> + .len = 16
> + },
> + .plaintext = {
> + .data = plaintext_aes128ctr,
> + .len = 20
> + },
> + .ciphertext = {
> + .data = plaintext_aes128ctr,
> + .len = 20
> + },
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
> + 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
> + 0xDE, 0xF4, 0xDE, 0xAD
> + },
> + .len = 20
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> +/* NULL cipher NULL auth 1-byte multiple test vector */
> +static const struct blockcipher_test_data null_test_data_chain_x1_multiple = {
> + .crypto_algo = RTE_CRYPTO_CIPHER_NULL,
> + .cipher_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .iv = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
> + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
> + },
> + .len = 16
> + },
> + .plaintext = {
> + .data = plaintext_aes128ctr,
> + .len = 21
> + },
> + .ciphertext = {
> + .data = plaintext_aes128ctr,
> + .len = 21
> + },
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
> + 0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
> + 0xDE, 0xF4, 0xDE, 0xAD
> + },
> + .len = 20
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> /* AES128-CTR-SHA1 test vector */
> static const struct blockcipher_test_data aes_test_data_1 = {
> .crypto_algo = RTE_CRYPTO_CIPHER_AES_CTR,
> @@ -1822,6 +1957,90 @@ static const struct blockcipher_test_case
> aes_chain_test_cases[] = {
> BLOCKCIPHER_TEST_TARGET_PMD_CCP |
> BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
> },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x8byte",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x8byte -
> OOP",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x8byte - OOP",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x4byte",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x4byte -
> OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x4byte - OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x1byte",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-CIPHER-NULL-AUTH encrypt & gen x1byte -
> OOP",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL-AUTH-NULL-CIPHER verify & decrypt
> x1byte - OOP",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> };
>
> static const struct blockcipher_test_case aes_cipheronly_test_cases[] = {
> @@ -2125,7 +2344,63 @@ static const struct blockcipher_test_case
> aes_cipheronly_test_cases[] = {
> .test_data = &aes_test_data_xts_key_64_pt_48,
> .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> - }
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x8 - encryption",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x8 - decryption",
> + .test_data = &null_test_data_chain_x8_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - encryption",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - decryption",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - encryption - OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x4 - decryption - OOP",
> + .test_data = &null_test_data_chain_x4_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x1 - encryption",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "cipher-only - NULL algo - x1 - decryption",
> + .test_data = &null_test_data_chain_x1_multiple,
> + .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> };
>
> static const struct blockcipher_test_case aes_docsis_test_cases[] = {
> diff --git a/app/test/test_cryptodev_blockcipher.c
> b/app/test/test_cryptodev_blockcipher.c
> index cdbdcce1e..b8dcc3962 100644
> --- a/app/test/test_cryptodev_blockcipher.c
> +++ b/app/test/test_cryptodev_blockcipher.c
> @@ -77,6 +77,8 @@ test_blockcipher_one_case(const struct
> blockcipher_test_case *t,
> RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
> int octeontx_pmd = rte_cryptodev_driver_id_get(
> RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
> + int null_pmd = rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD));
>
> int nb_segs = 1;
> uint32_t nb_iterates = 0;
> @@ -122,7 +124,8 @@ test_blockcipher_one_case(const struct
> blockcipher_test_case *t,
> driver_id == mrvl_pmd ||
> driver_id == ccp_pmd ||
> driver_id == virtio_pmd ||
> - driver_id == octeontx_pmd) { /* Fall through */
> + driver_id == octeontx_pmd ||
> + driver_id == null_pmd) { /* Fall through */
> digest_len = tdata->digest.len;
> } else if (driver_id == aesni_mb_pmd ||
> driver_id == scheduler_pmd) {
> @@ -712,6 +715,8 @@ test_blockcipher_all_tests(struct rte_mempool
> *mbuf_pool,
> RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
> int octeontx_pmd = rte_cryptodev_driver_id_get(
> RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
> + int null_pmd = rte_cryptodev_driver_id_get(
> + RTE_STR(CRYPTODEV_NAME_NULL_PMD));
>
> switch (test_type) {
> case BLKCIPHER_AES_CHAIN_TYPE:
> @@ -782,6 +787,8 @@ test_blockcipher_all_tests(struct rte_mempool
> *mbuf_pool,
> target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO;
> else if (driver_id == octeontx_pmd)
> target_pmd_mask =
> BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX;
> + else if (driver_id == null_pmd)
> + target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL;
> else
> TEST_ASSERT(0, "Unrecognized cryptodev type");
>
> diff --git a/app/test/test_cryptodev_blockcipher.h
> b/app/test/test_cryptodev_blockcipher.h
> index 060d10498..3d4b97533 100644
> --- a/app/test/test_cryptodev_blockcipher.h
> +++ b/app/test/test_cryptodev_blockcipher.h
> @@ -31,6 +31,7 @@
> #define BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO 0x0200 /* VIRTIO flag
> */
> #define BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR 0x0400 /* CAAM_JR
> flag */
> #define BLOCKCIPHER_TEST_TARGET_PMD_CCP 0x0800 /* CCP
> flag */
> +#define BLOCKCIPHER_TEST_TARGET_PMD_NULL 0x1000 /* NULL flag
> */
>
> #define BLOCKCIPHER_TEST_OP_CIPHER
> (BLOCKCIPHER_TEST_OP_ENCRYPT | \
> BLOCKCIPHER_TEST_OP_DECRYPT)
> diff --git a/app/test/test_cryptodev_hash_test_vectors.h
> b/app/test/test_cryptodev_hash_test_vectors.h
> index d3a26609c..6f201c08a 100644
> --- a/app/test/test_cryptodev_hash_test_vectors.h
> +++ b/app/test/test_cryptodev_hash_test_vectors.h
> @@ -358,6 +358,31 @@ cmac_test_vector = {
> };
>
> static const struct blockcipher_test_data
> +null_auth_test_vector = {
> + .auth_algo = RTE_CRYPTO_AUTH_NULL,
> + .ciphertext = { /* arbitrary data - shouldn't be used */
> + .data = plaintext_hash,
> + .len = 512
> + },
> + .auth_key = { /* arbitrary data - shouldn't be used */
> + .data = {
> + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
> + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
> + },
> + .len = 16
> + },
> + .digest = {
> + .data = {
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + },
> + .len = 20,
> + .truncated_len = 12
> + }
> +};
> +
> +static const struct blockcipher_test_data
> cmac_test_vector_12 = {
> .auth_algo = RTE_CRYPTO_AUTH_AES_CMAC,
> .ciphertext = {
> @@ -741,7 +766,36 @@ static const struct blockcipher_test_case
> hash_test_cases[] = {
> .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
> .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB |
> BLOCKCIPHER_TEST_TARGET_PMD_QAT
> - }
> + },
> + {
> + .test_descr = "NULL algo - auth generate",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL algo - auth verify",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL |
> + BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL algo - auth generate - OOP",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> + {
> + .test_descr = "NULL algo - auth verify - OOP",
> + .test_data = &null_auth_test_vector,
> + .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY,
> + .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
> + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT
> + },
> +
> };
>
> #endif /* TEST_CRYPTODEV_HASH_TEST_VECTORS_H_ */
> --
> 2.13.6
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism
2019-04-30 7:20 ` Akhil Goyal
2019-04-30 7:20 ` Akhil Goyal
@ 2019-04-30 9:54 ` Trahe, Fiona
2019-04-30 9:54 ` Trahe, Fiona
2019-06-25 12:54 ` Akhil Goyal
1 sibling, 2 replies; 7+ messages in thread
From: Trahe, Fiona @ 2019-04-30 9:54 UTC (permalink / raw)
To: Akhil Goyal, dev
Cc: thomas, Kusztal, ArkadiuszX, Iremonger, Bernard, anoobj, Trahe, Fiona
Hi Akhil,
> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, April 30, 2019 8:20 AM
> To: Trahe, Fiona <fiona.trahe@intel.com>; dev@dpdk.org
> Cc: thomas@monjalon.net; Kusztal, ArkadiuszX <arkadiuszx.kusztal@intel.com>; Iremonger, Bernard
> <bernard.iremonger@intel.com>; anoobj@marvell.com
> Subject: RE: [PATCH] test/crypto: added NULL algo tests to loop test mechanism
>
> Hi Fiona,
>
> I believe this patch is for 19.08, we normally do not accept such changes in RC4.
[Fiona] Yes, it's for 19.08. Sorry, I should probably have indicated this in the header.
> Also the patch
> http://patches.dpdk.org/patch/53117/
> looks to be meaningful if this patch is accepted.
> Do you want we to apply the fix in driver in this release and add the test cases in the next release, or
> should I defer both in next release.
[Fiona] Please apply the driver fix in this release and the test code in the next release.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism
2019-04-30 9:54 ` Trahe, Fiona
@ 2019-04-30 9:54 ` Trahe, Fiona
2019-06-25 12:54 ` Akhil Goyal
1 sibling, 0 replies; 7+ messages in thread
From: Trahe, Fiona @ 2019-04-30 9:54 UTC (permalink / raw)
To: Akhil Goyal, dev
Cc: thomas, Kusztal, ArkadiuszX, Iremonger, Bernard, anoobj, Trahe, Fiona
Hi Akhil,
> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, April 30, 2019 8:20 AM
> To: Trahe, Fiona <fiona.trahe@intel.com>; dev@dpdk.org
> Cc: thomas@monjalon.net; Kusztal, ArkadiuszX <arkadiuszx.kusztal@intel.com>; Iremonger, Bernard
> <bernard.iremonger@intel.com>; anoobj@marvell.com
> Subject: RE: [PATCH] test/crypto: added NULL algo tests to loop test mechanism
>
> Hi Fiona,
>
> I believe this patch is for 19.08, we normally do not accept such changes in RC4.
[Fiona] Yes, it's for 19.08. Sorry, I should probably have indicated this in the header.
> Also the patch
> http://patches.dpdk.org/patch/53117/
> looks to be meaningful if this patch is accepted.
> Do you want we to apply the fix in driver in this release and add the test cases in the next release, or
> should I defer both in next release.
[Fiona] Please apply the driver fix in this release and the test code in the next release.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism
2019-04-30 9:54 ` Trahe, Fiona
2019-04-30 9:54 ` Trahe, Fiona
@ 2019-06-25 12:54 ` Akhil Goyal
1 sibling, 0 replies; 7+ messages in thread
From: Akhil Goyal @ 2019-06-25 12:54 UTC (permalink / raw)
To: Trahe, Fiona, dev; +Cc: thomas, Kusztal, ArkadiuszX, Iremonger, Bernard, anoobj
>
> Hi Akhil,
>
> >
> > Hi Fiona,
> >
> > I believe this patch is for 19.08, we normally do not accept such changes in
> RC4.
> [Fiona] Yes, it's for 19.08. Sorry, I should probably have indicated this in the
> header.
>
> > Also the patch
> >
> http://patches.dpdk.org/patch/53117/
> > looks to be meaningful if this patch is accepted.
> > Do you want we to apply the fix in driver in this release and add the test cases
> in the next release, or
> > should I defer both in next release.
> [Fiona] Please apply the driver fix in this release and the test code in the next
> release.
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Applied to dpdk-next-crypto
Thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-06-25 12:54 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-26 19:31 [dpdk-dev] [PATCH] test/crypto: added NULL algo tests to loop test mechanism Fiona Trahe
2019-04-26 19:31 ` Fiona Trahe
2019-04-30 7:20 ` Akhil Goyal
2019-04-30 7:20 ` Akhil Goyal
2019-04-30 9:54 ` Trahe, Fiona
2019-04-30 9:54 ` Trahe, Fiona
2019-06-25 12:54 ` Akhil Goyal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).