From 2a41db7589cb27dc491963f8c09b8dd452a8296d Mon Sep 17 00:00:00 2001 From: Nagadheeraj Rottela Date: Fri, 13 Mar 2020 17:13:37 +0530 Subject: [PATCH] crypto/nitrox: support 3DES-CBC This patch adds 3DES CBC mode cipher algorithm. Signed-off-by: Nagadheeraj Rottela --- app/test/test_cryptodev.c | 1 + app/test/test_cryptodev_des_test_vectors.h | 6 ++++-- doc/guides/cryptodevs/features/nitrox.ini | 1 + doc/guides/cryptodevs/nitrox.rst | 2 ++ drivers/crypto/nitrox/nitrox_sym.c | 4 ++++ .../crypto/nitrox/nitrox_sym_capabilities.c | 21 ++++++++++++++++++- 6 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 927c3b7501..3df63eb71a 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -13139,6 +13139,7 @@ static struct unit_test_suite cryptodev_nitrox_testsuite = { TEST_CASE_ST(ut_setup, ut_teardown, test_device_configure_invalid_queue_pair_ids), TEST_CASE_ST(ut_setup, ut_teardown, test_AES_chain_all), + TEST_CASE_ST(ut_setup, ut_teardown, test_3DES_chain_all), TEST_CASES_END() /**< NULL terminate unit test array */ } diff --git a/app/test/test_cryptodev_des_test_vectors.h b/app/test/test_cryptodev_des_test_vectors.h index 0a362d9808..d8a62d2b52 100644 --- a/app/test/test_cryptodev_des_test_vectors.h +++ b/app/test/test_cryptodev_des_test_vectors.h @@ -1115,7 +1115,8 @@ static const struct blockcipher_test_case triple_des_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX | - BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX2 + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX2 | + BLOCKCIPHER_TEST_TARGET_PMD_NITROX }, { .test_descr = "3DES-192-CBC HMAC-SHA1 Decryption Digest Verify", @@ -1129,7 +1130,8 @@ static const struct blockcipher_test_case triple_des_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | BLOCKCIPHER_TEST_TARGET_PMD_CCP | BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX | - BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX2 + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX2 | + BLOCKCIPHER_TEST_TARGET_PMD_NITROX }, { .test_descr = "3DES-192-CBC SHA1 Encryption Digest", diff --git a/doc/guides/cryptodevs/features/nitrox.ini b/doc/guides/cryptodevs/features/nitrox.ini index ddc3c05f46..183494731e 100644 --- a/doc/guides/cryptodevs/features/nitrox.ini +++ b/doc/guides/cryptodevs/features/nitrox.ini @@ -20,6 +20,7 @@ OOP LB In LB Out = Y AES CBC (128) = Y AES CBC (192) = Y AES CBC (256) = Y +3DES CBC = Y ; ; Supported authentication algorithms of the 'nitrox' crypto driver. diff --git a/doc/guides/cryptodevs/nitrox.rst b/doc/guides/cryptodevs/nitrox.rst index f8a527c058..85f5212b64 100644 --- a/doc/guides/cryptodevs/nitrox.rst +++ b/doc/guides/cryptodevs/nitrox.rst @@ -18,6 +18,7 @@ Nitrox crypto PMD has support for: Cipher algorithms: * ``RTE_CRYPTO_CIPHER_AES_CBC`` +* ``RTE_CRYPTO_CIPHER_3DES_CBC`` Hash algorithms: @@ -29,6 +30,7 @@ Limitations ----------- * AES_CBC Cipher Only combination is not supported. +* 3DES Cipher Only combination is not supported. * Session-less APIs are not supported. Installation diff --git a/drivers/crypto/nitrox/nitrox_sym.c b/drivers/crypto/nitrox/nitrox_sym.c index d1b32fec92..fad4a7a487 100644 --- a/drivers/crypto/nitrox/nitrox_sym.c +++ b/drivers/crypto/nitrox/nitrox_sym.c @@ -314,6 +314,10 @@ get_flexi_cipher_type(enum rte_crypto_cipher_algorithm algo, bool *is_aes) type = CIPHER_AES_CBC; *is_aes = true; break; + case RTE_CRYPTO_CIPHER_3DES_CBC: + type = CIPHER_3DES_CBC; + *is_aes = false; + break; default: type = CIPHER_INVALID; NITROX_LOG(ERR, "Algorithm not supported %d\n", algo); diff --git a/drivers/crypto/nitrox/nitrox_sym_capabilities.c b/drivers/crypto/nitrox/nitrox_sym_capabilities.c index 47ceead734..dc4df9185f 100644 --- a/drivers/crypto/nitrox/nitrox_sym_capabilities.c +++ b/drivers/crypto/nitrox/nitrox_sym_capabilities.c @@ -88,7 +88,26 @@ static const struct rte_cryptodev_capabilities nitrox_capabilities[] = { }, } }, } }, - + { /* 3DES CBC */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, + {.cipher = { + .algo = RTE_CRYPTO_CIPHER_3DES_CBC, + .block_size = 8, + .key_size = { + .min = 24, + .max = 24, + .increment = 0 + }, + .iv_size = { + .min = 8, + .max = 8, + .increment = 0 + } + }, } + }, } + }, RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() }; -- 2.20.1