SM4 is a block cipher used in the Chinese National Standard for Wireless LAN WAPI and also used with Transport Layer Security.
- Added SM4 encryption algorithm. Supported modes are ECB, CBC and CTR. Signed-off-by: Arek Kusztal <arkadiuszx.kusz...@intel.com> --- doc/guides/cryptodevs/features/default.ini | 3 +++ doc/guides/rel_notes/release_22_11.rst | 4 ++++ lib/cryptodev/rte_crypto_sym.h | 9 ++++++++- lib/cryptodev/rte_cryptodev.c | 5 ++++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/doc/guides/cryptodevs/features/default.ini b/doc/guides/cryptodevs/features/default.ini index 7371ca6644..1608426b12 100644 --- a/doc/guides/cryptodevs/features/default.ini +++ b/doc/guides/cryptodevs/features/default.ini @@ -61,6 +61,9 @@ DES DOCSIS BPI = SNOW3G UEA2 = KASUMI F8 = ZUC EEA3 = +SM4 ECB = +SM4 CBC = +SM4 CTR = ; ; Supported authentication algorithms of a default crypto driver. diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 8c021cf050..15fc6ec40a 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -55,6 +55,10 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Added SM4 encryption algorithm in ECB, CBC and CTR mode.** + + Added SM4 encryption algorithm to the Cryptodev API. + Supported modes are ECB, CBC and CTR. Removed Items ------------- diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index daa090b978..33420e0b36 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -160,12 +160,19 @@ enum rte_crypto_cipher_algorithm { * for m_src and m_dst in the rte_crypto_sym_op must be NULL. */ - RTE_CRYPTO_CIPHER_DES_DOCSISBPI + RTE_CRYPTO_CIPHER_DES_DOCSISBPI, /**< DES algorithm using modes required by * DOCSIS Baseline Privacy Plus Spec. * Chained mbufs are not supported in this mode, i.e. rte_mbuf.next * for m_src and m_dst in the rte_crypto_sym_op must be NULL. */ + + RTE_CRYPTO_CIPHER_SM4_ECB, + /**< SM4 algorithm in ECB mode */ + RTE_CRYPTO_CIPHER_SM4_CBC, + /**< SM4 algorithm in CBC mode */ + RTE_CRYPTO_CIPHER_SM4_CTR + /**< SM4 algorithm in CTR mode */ }; /** Cipher algorithm name strings */ diff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.c index 42f3221052..266804f0fe 100644 --- a/lib/cryptodev/rte_cryptodev.c +++ b/lib/cryptodev/rte_cryptodev.c @@ -89,7 +89,10 @@ rte_crypto_cipher_algorithm_strings[] = { [RTE_CRYPTO_CIPHER_KASUMI_F8] = "kasumi-f8", [RTE_CRYPTO_CIPHER_SNOW3G_UEA2] = "snow3g-uea2", - [RTE_CRYPTO_CIPHER_ZUC_EEA3] = "zuc-eea3" + [RTE_CRYPTO_CIPHER_ZUC_EEA3] = "zuc-eea3", + [RTE_CRYPTO_CIPHER_SM4_ECB] = "sm4-ecb", + [RTE_CRYPTO_CIPHER_SM4_CBC] = "sm4-cbc", + [RTE_CRYPTO_CIPHER_SM4_CTR] = "sm4-ctr" }; /** -- 2.13.6