[PATCH 00/28] crypto: template instantiation cleanup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

This series makes all crypto templates initialize their spawns (i.e.
their "inner algorithms") in a consistent way, using a consistent set of
crypto_grab_*() helper functions.  skcipher, aead, and akcipher spawns
already used this approach, but shash, ahash, and cipher spawns were
being initialized differently -- causing confusion and unnecessary code.

As long as it's introducing new crypto_grab_*() functions, this series
also takes the opportunity to first improve the existing ones to take
the instance pointer as a parameter, so that all callers don't have to
store it temporarily to crypto_spawn::inst.

Finally, this series also makes two changes that allow simplifying the
error handling in template ->create() functions: (1) crypto_drop_spawn()
is made a no-op on uninitialized instances, and (2) crypto_grab_spawn()
is made to handle an ERR_PTR() name.

Taking advantage of these two changes, this series also simplifies the
error handling in the template ->create() functions which were being
updated anyway to use a new crypto_grab_*() function.  But to keep this
series manageable, simplifying error handling in the remaining templates
is left for later.

This series is an internal cleanup only; there are no changes for users
of the crypto API.  I've tested that all the templates still get
instantiated correctly and that errors seem to be handled properly.

Eric Biggers (28):
  crypto: algapi - make crypto_drop_spawn() a no-op on uninitialized
    spawns
  crypto: algapi - make crypto_grab_spawn() handle an ERR_PTR() name
  crypto: shash - make struct shash_instance be the full size
  crypto: ahash - make struct ahash_instance be the full size
  crypto: skcipher - pass instance to crypto_grab_skcipher()
  crypto: aead - pass instance to crypto_grab_aead()
  crypto: akcipher - pass instance to crypto_grab_akcipher()
  crypto: algapi - pass instance to crypto_grab_spawn()
  crypto: shash - introduce crypto_grab_shash()
  crypto: ahash - introduce crypto_grab_ahash()
  crypto: cipher - introduce crypto_cipher_spawn and
    crypto_grab_cipher()
  crypto: adiantum - use crypto_grab_{cipher,shash} and simplify error
    paths
  crypto: cryptd - use crypto_grab_shash() and simplify error paths
  crypto: hmac - use crypto_grab_shash() and simplify error paths
  crypto: authenc - use crypto_grab_ahash() and simplify error paths
  crypto: authencesn - use crypto_grab_ahash() and simplify error paths
  crypto: gcm - use crypto_grab_ahash() and simplify error paths
  crypto: ccm - use crypto_grab_ahash() and simplify error paths
  crypto: chacha20poly1305 - use crypto_grab_ahash() and simplify error
    paths
  crypto: skcipher - use crypto_grab_cipher() and simplify error paths
  crypto: cbcmac - use crypto_grab_cipher() and simplify error paths
  crypto: cmac - use crypto_grab_cipher() and simplify error paths
  crypto: vmac - use crypto_grab_cipher() and simplify error paths
  crypto: xcbc - use crypto_grab_cipher() and simplify error paths
  crypto: cipher - make crypto_spawn_cipher() take a crypto_cipher_spawn
  crypto: algapi - remove obsoleted instance creation helpers
  crypto: ahash - unexport crypto_ahash_type
  crypto: algapi - fold crypto_init_spawn() into crypto_grab_spawn()

 crypto/adiantum.c                  |  87 +++++++----------------
 crypto/aead.c                      |   7 +-
 crypto/ahash.c                     |  39 ++++-------
 crypto/akcipher.c                  |   7 +-
 crypto/algapi.c                    |  99 +++++---------------------
 crypto/authenc.c                   |  57 +++++----------
 crypto/authencesn.c                |  57 +++++----------
 crypto/ccm.c                       | 107 +++++++++++------------------
 crypto/chacha20poly1305.c          |  88 ++++++++----------------
 crypto/cipher.c                    |  11 +++
 crypto/cmac.c                      |  38 +++++-----
 crypto/cryptd.c                    |  76 ++++++--------------
 crypto/ctr.c                       |   4 +-
 crypto/cts.c                       |   9 +--
 crypto/essiv.c                     |  16 ++---
 crypto/gcm.c                       |  76 ++++++++------------
 crypto/geniv.c                     |   4 +-
 crypto/hmac.c                      |  36 +++++-----
 crypto/lrw.c                       |  15 ++--
 crypto/pcrypt.c                    |   5 +-
 crypto/rsa-pkcs1pad.c              |   8 ++-
 crypto/shash.c                     |  28 +++-----
 crypto/skcipher.c                  |  41 +++++------
 crypto/vmac.c                      |  38 +++++-----
 crypto/xcbc.c                      |  43 +++++-------
 crypto/xts.c                       |   9 +--
 include/crypto/algapi.h            |  58 +++++++---------
 include/crypto/internal/aead.h     |  11 +--
 include/crypto/internal/akcipher.h |  12 +---
 include/crypto/internal/hash.h     |  70 +++++++++----------
 include/crypto/internal/skcipher.h |  11 +--
 31 files changed, 423 insertions(+), 744 deletions(-)

-- 
2.24.1




[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux