[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 00/17] crypto/cipher: Class hierarchy cleanups
From: |
Richard Henderson |
Subject: |
[PATCH 00/17] crypto/cipher: Class hierarchy cleanups |
Date: |
Wed, 12 Aug 2020 20:25:20 -0700 |
Mostly this is intended to cleanup the class hierarchy
used for the ciphers. We currently have multiple levels
of dispatch, and multiple separate allocations. The final
patches rearrange this to one level of indirect call, and
all memory allocated contiguously.
But on the way there are a number of other misc cleanups.
I know those final patches are somewhat big, but I don't
immediately see how to split them apart.
I noticed this while profiling patches to make ARM PAUTH
use the crypto subsystem. The qcrypto_cipher_* dispatch
routines were consuming a noticeable portion of the runtime,
and with these changes they were down below 1% where they
ought to be.
While I did not continue with PAUTH using AES, I still think
these are good cleanups.
r~
Richard Henderson (17):
crypto: Move QCryptoCipher typedef to qemu/typedefs.h
crypto: Move QCryptoCipherDriver typedef to qemu/typedefs.h
crypto: Assume blocksize is a power of 2
crypto: Rename cipher include files to .inc.c
crypto: Remove redundant includes
crypto/nettle: Fix xts_encrypt arguments
crypto: Use the correct const type for driver
crypto: Allocate QCryptoCipher with the subclass
crypto: Move cipher->driver init to qcrypto_*_cipher_ctx_new
crypto: Constify cipher data tables
crypto/builtin: Remove odd-sized AES block handling
crypto/builtin: Merge qcrypto_cipher_aes_{ecb,xts}_{en,de}crypt
crypto/builtin: Move AES_cbc_encrypt into cipher-builtin.inc.c
crypto/builtin: Split and simplify AES_encrypt_cbc
crypto/builtin: Split QCryptoCipherBuiltin into subclasses
crypto/nettle: Split QCryptoCipherNettle into subclasses
crypto/gcrypt: Split QCryptoCipherGcrypt into subclasses
crypto/afalgpriv.h | 3 +
crypto/cipherpriv.h | 6 +-
include/crypto/aes.h | 4 -
include/crypto/cipher.h | 5 +-
include/qemu/typedefs.h | 2 +
crypto/aes.c | 51 --
crypto/cipher-afalg.c | 25 +-
crypto/cipher-builtin.c | 532 ------------
crypto/cipher-builtin.inc.c | 425 ++++++++++
.../{cipher-gcrypt.c => cipher-gcrypt.inc.c} | 522 ++++++------
crypto/cipher-nettle.c | 733 -----------------
crypto/cipher-nettle.inc.c | 756 ++++++++++++++++++
crypto/cipher.c | 44 +-
13 files changed, 1477 insertions(+), 1631 deletions(-)
delete mode 100644 crypto/cipher-builtin.c
create mode 100644 crypto/cipher-builtin.inc.c
rename crypto/{cipher-gcrypt.c => cipher-gcrypt.inc.c} (51%)
delete mode 100644 crypto/cipher-nettle.c
create mode 100644 crypto/cipher-nettle.inc.c
--
2.25.1
- [PATCH 00/17] crypto/cipher: Class hierarchy cleanups,
Richard Henderson <=
[PATCH 02/17] crypto: Move QCryptoCipherDriver typedef to qemu/typedefs.h, Richard Henderson, 2020/08/12
[PATCH 03/17] crypto: Assume blocksize is a power of 2, Richard Henderson, 2020/08/12