mbox series

[v2,00/17] crypto: arm/aes - XTS ciphertext stealing and other updates

Message ID 20190903164339.27984-1-ard.biesheuvel@linaro.org (mailing list archive)
Headers show
Series crypto: arm/aes - XTS ciphertext stealing and other updates | expand

Message

Ard Biesheuvel Sept. 3, 2019, 4:43 p.m. UTC
This is a collection of improvements for the ARM and arm64 implementations
of the AES based skciphers.

NOTES:
- the last two patches add XTS ciphertext stealing test vectors and should
  NOT be merged until all AES-XTS implementations have been confirmed to work
- tested for correctness [on both QEMU and actual hardware (via kernelci)] but
  not for performance regressions

The most important part of this series is the implementation of ciphertext
stealing support for the XTS skciphers. The CE and NEON bit slicing based
code for both ARM and arm64 is updated to handle inputs of any length >= the
XTS block size of 16 bytes.

It also updates the arm64 CTS/CBC implementation not to use a request ctx
structure, and ports the resulting implementation to ARM as well.

The remaining patches are cleanups and minor improvements in the 'ongoing
maintenance' category. None of these are -stable candidates AFAICT.

Changes since v1:
- simply skcipher_walk_abort() - pass -ECANCELED instead of walk->nbytes into
  skcipher_walk_done() so that the latter does not require any changes (#8)
- rebased onto cryptodev/master


Ard Biesheuvel (16):
  crypto: arm/aes - fix round key prototypes
  crypto: arm/aes-ce - yield the SIMD unit between scatterwalk steps
  crypto: arm/aes-ce - switch to 4x interleave
  crypto: arm/aes-ce - replace tweak mask literal with composition
  crypto: arm/aes-neonbs - replace tweak mask literal with composition
  crypto: arm64/aes-neonbs - replace tweak mask literal with composition
  crypto: arm64/aes-neon - limit exposed routines if faster driver is
    enabled
  crypto: skcipher - add the ability to abort a skcipher walk
  crypto: arm64/aes-cts-cbc-ce - performance tweak
  crypto: arm64/aes-cts-cbc - move request context data to the stack
  crypto: arm64/aes - implement support for XTS ciphertext stealing
  crypto: arm64/aes-neonbs - implement ciphertext stealing for XTS
  crypto: arm/aes-ce - implement ciphertext stealing for XTS
  crypto: arm/aes-neonbs - implement ciphertext stealing for XTS
  crypto: arm/aes-ce - implement ciphertext stealing for CBC
  crypto: testmgr - add test vectors for XTS ciphertext stealing

Pascal van Leeuwen (1):
  crypto: testmgr - Add additional AES-XTS vectors for covering CTS

 arch/arm/crypto/aes-ce-core.S       | 462 ++++++++++++++------
 arch/arm/crypto/aes-ce-glue.c       | 377 +++++++++++++---
 arch/arm/crypto/aes-neonbs-core.S   |  24 +-
 arch/arm/crypto/aes-neonbs-glue.c   |  91 +++-
 arch/arm64/crypto/aes-ce.S          |   3 +
 arch/arm64/crypto/aes-glue.c        | 299 ++++++++-----
 arch/arm64/crypto/aes-modes.S       | 107 ++++-
 arch/arm64/crypto/aes-neon.S        |   5 +
 arch/arm64/crypto/aes-neonbs-core.S |   9 +-
 arch/arm64/crypto/aes-neonbs-glue.c | 111 ++++-
 crypto/testmgr.h                    | 368 ++++++++++++++++
 include/crypto/internal/skcipher.h  |   5 +
 12 files changed, 1495 insertions(+), 366 deletions(-)

Comments

Herbert Xu Sept. 9, 2019, 7:52 a.m. UTC | #1
On Tue, Sep 03, 2019 at 09:43:22AM -0700, Ard Biesheuvel wrote:
> This is a collection of improvements for the ARM and arm64 implementations
> of the AES based skciphers.
> 
> NOTES:
> - the last two patches add XTS ciphertext stealing test vectors and should
>   NOT be merged until all AES-XTS implementations have been confirmed to work
> - tested for correctness [on both QEMU and actual hardware (via kernelci)] but
>   not for performance regressions
> 
> The most important part of this series is the implementation of ciphertext
> stealing support for the XTS skciphers. The CE and NEON bit slicing based
> code for both ARM and arm64 is updated to handle inputs of any length >= the
> XTS block size of 16 bytes.
> 
> It also updates the arm64 CTS/CBC implementation not to use a request ctx
> structure, and ports the resulting implementation to ARM as well.
> 
> The remaining patches are cleanups and minor improvements in the 'ongoing
> maintenance' category. None of these are -stable candidates AFAICT.
> 
> Changes since v1:
> - simply skcipher_walk_abort() - pass -ECANCELED instead of walk->nbytes into
>   skcipher_walk_done() so that the latter does not require any changes (#8)
> - rebased onto cryptodev/master
> 
> 
> Ard Biesheuvel (16):
>   crypto: arm/aes - fix round key prototypes
>   crypto: arm/aes-ce - yield the SIMD unit between scatterwalk steps
>   crypto: arm/aes-ce - switch to 4x interleave
>   crypto: arm/aes-ce - replace tweak mask literal with composition
>   crypto: arm/aes-neonbs - replace tweak mask literal with composition
>   crypto: arm64/aes-neonbs - replace tweak mask literal with composition
>   crypto: arm64/aes-neon - limit exposed routines if faster driver is
>     enabled
>   crypto: skcipher - add the ability to abort a skcipher walk
>   crypto: arm64/aes-cts-cbc-ce - performance tweak
>   crypto: arm64/aes-cts-cbc - move request context data to the stack
>   crypto: arm64/aes - implement support for XTS ciphertext stealing
>   crypto: arm64/aes-neonbs - implement ciphertext stealing for XTS
>   crypto: arm/aes-ce - implement ciphertext stealing for XTS
>   crypto: arm/aes-neonbs - implement ciphertext stealing for XTS
>   crypto: arm/aes-ce - implement ciphertext stealing for CBC
>   crypto: testmgr - add test vectors for XTS ciphertext stealing
> 
> Pascal van Leeuwen (1):
>   crypto: testmgr - Add additional AES-XTS vectors for covering CTS
> 
>  arch/arm/crypto/aes-ce-core.S       | 462 ++++++++++++++------
>  arch/arm/crypto/aes-ce-glue.c       | 377 +++++++++++++---
>  arch/arm/crypto/aes-neonbs-core.S   |  24 +-
>  arch/arm/crypto/aes-neonbs-glue.c   |  91 +++-
>  arch/arm64/crypto/aes-ce.S          |   3 +
>  arch/arm64/crypto/aes-glue.c        | 299 ++++++++-----
>  arch/arm64/crypto/aes-modes.S       | 107 ++++-
>  arch/arm64/crypto/aes-neon.S        |   5 +
>  arch/arm64/crypto/aes-neonbs-core.S |   9 +-
>  arch/arm64/crypto/aes-neonbs-glue.c | 111 ++++-
>  crypto/testmgr.h                    | 368 ++++++++++++++++
>  include/crypto/internal/skcipher.h  |   5 +
>  12 files changed, 1495 insertions(+), 366 deletions(-)

Patches 1-15 applied.  Thanks.