mbox series

[v3,00/13] Optimizing SM3 and SM4 algorithms using arm64 NEON/CE instructions

Message ID 20221027065505.15306-1-tianjia.zhang@linux.alibaba.com
Headers show
Series Optimizing SM3 and SM4 algorithms using arm64 NEON/CE instructions | expand

Message

Tianjia Zhang Oct. 27, 2022, 6:54 a.m. UTC
Hi folks,

This series of patches uses different arm64 instruction sets to optimize
the SM3 and SM4 algorithms, as well as the optimization of different
modes of SM4.

patch 1-2:   NEON instruction set optimization for SM3
patch 3:     Refactored and streamlined SM4 NEON instruction implementation
patch 4-5:   support test for new SM4 mode
patch 6-8:   Refactored and streamlined SM4 CE instruction implementation
patch 9-10:  CE accelerated implementation of SM4 CTS/XTS
patch 11:    CE accelerated implementation of SM4 CMAC/XCBC/CBCMAC
patch 12-13: CE accelerated implementation of SM4 CCM/GCM

v3 change:
  - As Eric said, remove the code for ESSIV, including testmgr and tcrypt

v2 changes:
  - remove ARMv9 SVE acceleration implementation
  - rebase onto v6.1-rc1

Cheers,
Tianjia

Tianjia Zhang (13):
  crypto: arm64/sm3 - raise the priority of the CE implementation
  crypto: arm64/sm3 - add NEON assembly implementation
  crypto: arm64/sm4 - refactor and simplify NEON implementation
  crypto: testmgr - add SM4 cts-cbc/xts/xcbc test vectors
  crypto: tcrypt - add SM4 cts-cbc/xts/xcbc test
  crypto: arm64/sm4 - refactor and simplify CE implementation
  crypto: arm64/sm4 - simplify sm4_ce_expand_key() of CE implementation
  crypto: arm64/sm4 - export reusable CE acceleration functions
  crypto: arm64/sm4 - add CE implementation for CTS-CBC mode
  crypto: arm64/sm4 - add CE implementation for XTS mode
  crypto: arm64/sm4 - add CE implementation for cmac/xcbc/cbcmac
  crypto: arm64/sm4 - add CE implementation for CCM mode
  crypto: arm64/sm4 - add CE implementation for GCM mode

 arch/arm64/crypto/Kconfig           |   47 +-
 arch/arm64/crypto/Makefile          |    9 +
 arch/arm64/crypto/sm3-ce-glue.c     |    2 +-
 arch/arm64/crypto/sm3-neon-core.S   |  600 +++++++++++++
 arch/arm64/crypto/sm3-neon-glue.c   |  103 +++
 arch/arm64/crypto/sm4-ce-asm.h      |  209 +++++
 arch/arm64/crypto/sm4-ce-ccm-core.S |  328 ++++++++
 arch/arm64/crypto/sm4-ce-ccm-glue.c |  303 +++++++
 arch/arm64/crypto/sm4-ce-core.S     | 1205 ++++++++++++++++++---------
 arch/arm64/crypto/sm4-ce-gcm-core.S |  741 ++++++++++++++++
 arch/arm64/crypto/sm4-ce-gcm-glue.c |  286 +++++++
 arch/arm64/crypto/sm4-ce-glue.c     |  575 ++++++++++++-
 arch/arm64/crypto/sm4-ce.h          |   16 +
 arch/arm64/crypto/sm4-neon-core.S   |  630 +++++++++-----
 arch/arm64/crypto/sm4-neon-glue.c   |  172 +---
 crypto/tcrypt.c                     |   21 +
 crypto/testmgr.c                    |   19 +
 crypto/testmgr.h                    |  977 ++++++++++++++++++++++
 18 files changed, 5478 insertions(+), 765 deletions(-)
 create mode 100644 arch/arm64/crypto/sm3-neon-core.S
 create mode 100644 arch/arm64/crypto/sm3-neon-glue.c
 create mode 100644 arch/arm64/crypto/sm4-ce-asm.h
 create mode 100644 arch/arm64/crypto/sm4-ce-ccm-core.S
 create mode 100644 arch/arm64/crypto/sm4-ce-ccm-glue.c
 create mode 100644 arch/arm64/crypto/sm4-ce-gcm-core.S
 create mode 100644 arch/arm64/crypto/sm4-ce-gcm-glue.c
 create mode 100644 arch/arm64/crypto/sm4-ce.h

Comments

Herbert Xu Nov. 4, 2022, 9:38 a.m. UTC | #1
On Thu, Oct 27, 2022 at 02:54:52PM +0800, Tianjia Zhang wrote:
> Hi folks,
> 
> This series of patches uses different arm64 instruction sets to optimize
> the SM3 and SM4 algorithms, as well as the optimization of different
> modes of SM4.
> 
> patch 1-2:   NEON instruction set optimization for SM3
> patch 3:     Refactored and streamlined SM4 NEON instruction implementation
> patch 4-5:   support test for new SM4 mode
> patch 6-8:   Refactored and streamlined SM4 CE instruction implementation
> patch 9-10:  CE accelerated implementation of SM4 CTS/XTS
> patch 11:    CE accelerated implementation of SM4 CMAC/XCBC/CBCMAC
> patch 12-13: CE accelerated implementation of SM4 CCM/GCM
> 
> v3 change:
>   - As Eric said, remove the code for ESSIV, including testmgr and tcrypt
> 
> v2 changes:
>   - remove ARMv9 SVE acceleration implementation
>   - rebase onto v6.1-rc1
> 
> Cheers,
> Tianjia
> 
> Tianjia Zhang (13):
>   crypto: arm64/sm3 - raise the priority of the CE implementation
>   crypto: arm64/sm3 - add NEON assembly implementation
>   crypto: arm64/sm4 - refactor and simplify NEON implementation
>   crypto: testmgr - add SM4 cts-cbc/xts/xcbc test vectors
>   crypto: tcrypt - add SM4 cts-cbc/xts/xcbc test
>   crypto: arm64/sm4 - refactor and simplify CE implementation
>   crypto: arm64/sm4 - simplify sm4_ce_expand_key() of CE implementation
>   crypto: arm64/sm4 - export reusable CE acceleration functions
>   crypto: arm64/sm4 - add CE implementation for CTS-CBC mode
>   crypto: arm64/sm4 - add CE implementation for XTS mode
>   crypto: arm64/sm4 - add CE implementation for cmac/xcbc/cbcmac
>   crypto: arm64/sm4 - add CE implementation for CCM mode
>   crypto: arm64/sm4 - add CE implementation for GCM mode
> 
>  arch/arm64/crypto/Kconfig           |   47 +-
>  arch/arm64/crypto/Makefile          |    9 +
>  arch/arm64/crypto/sm3-ce-glue.c     |    2 +-
>  arch/arm64/crypto/sm3-neon-core.S   |  600 +++++++++++++
>  arch/arm64/crypto/sm3-neon-glue.c   |  103 +++
>  arch/arm64/crypto/sm4-ce-asm.h      |  209 +++++
>  arch/arm64/crypto/sm4-ce-ccm-core.S |  328 ++++++++
>  arch/arm64/crypto/sm4-ce-ccm-glue.c |  303 +++++++
>  arch/arm64/crypto/sm4-ce-core.S     | 1205 ++++++++++++++++++---------
>  arch/arm64/crypto/sm4-ce-gcm-core.S |  741 ++++++++++++++++
>  arch/arm64/crypto/sm4-ce-gcm-glue.c |  286 +++++++
>  arch/arm64/crypto/sm4-ce-glue.c     |  575 ++++++++++++-
>  arch/arm64/crypto/sm4-ce.h          |   16 +
>  arch/arm64/crypto/sm4-neon-core.S   |  630 +++++++++-----
>  arch/arm64/crypto/sm4-neon-glue.c   |  172 +---
>  crypto/tcrypt.c                     |   21 +
>  crypto/testmgr.c                    |   19 +
>  crypto/testmgr.h                    |  977 ++++++++++++++++++++++
>  18 files changed, 5478 insertions(+), 765 deletions(-)
>  create mode 100644 arch/arm64/crypto/sm3-neon-core.S
>  create mode 100644 arch/arm64/crypto/sm3-neon-glue.c
>  create mode 100644 arch/arm64/crypto/sm4-ce-asm.h
>  create mode 100644 arch/arm64/crypto/sm4-ce-ccm-core.S
>  create mode 100644 arch/arm64/crypto/sm4-ce-ccm-glue.c
>  create mode 100644 arch/arm64/crypto/sm4-ce-gcm-core.S
>  create mode 100644 arch/arm64/crypto/sm4-ce-gcm-glue.c
>  create mode 100644 arch/arm64/crypto/sm4-ce.h
> 
> -- 
> 2.24.3 (Apple Git-128)

All applied.  Thanks.