The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH 00/33] Library APIs for AES encryption modes
@ 2026-07-07  5:34 Eric Biggers
  2026-07-07  5:34 ` [PATCH 01/33] crypto: xts - Split out __xts_verify_key() helper Eric Biggers
                   ` (32 more replies)
  0 siblings, 33 replies; 45+ messages in thread
From: Eric Biggers @ 2026-07-07  5:34 UTC (permalink / raw)
  To: linux-crypto; +Cc: linux-kernel, Eric Biggers

This series applies to v7.2-rc2.  It can also be retrieved from:

    git fetch https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git aes-modes-v1

This series adds library APIs for all the AES encryption modes that are
used in the kernel, both authenticated and unauthenticated: AES-ECB,
AES-CBC, AES-CBC-CTS, AES-CTR, AES-XCTR, AES-XTS, AES-GCM, and AES-CCM.

Patches 2-7 add the library APIs, and patches 8-13 wire them up to the
traditional crypto API (with just priority 110 for now).  These are
intended to be taken through libcrypto-next for 7.3.

The remaining patches (14-33) convert users of the traditional crypto
API to use the new library APIs instead.  Most of these will be for 7.4
or later.  For now please consider these to be proof-of-concept patches
for helping inform the API design.  Most of them I haven't tested, and
their performance also won't be optimal yet (since the arch-optimized
code for these AES modes needs to be migrated into the library first).
Nevertheless I think they do make it very clear that (as usual) the
library is much easier to use than the traditional crypto API, and we
can expect performance improvements once everything is wired up as well.

Apologies for the large patch series, but it ended up being easiest to
handle all the AES modes at once rather than try to do them one by one.
This ensures a consistent design for them, which is really important.
Additionally, the arch-optimized AES code tends to intermingle different
modes, and many depend on each other anyway.

But as a result, to keep this series manageable it doesn't include the
usual KUnit tests or the integration of the architecture-optimized code.
Those will be sent separately in follow-up series.

Feedback is appreciated, especially on patches 2-7 and the library APIs
they add.

Eric Biggers (33):
  crypto: xts - Split out __xts_verify_key() helper
  lib/crypto: aes: Add ECB support
  lib/crypto: aes: Add CBC and CBC-CTS support
  lib/crypto: aes: Add CTR and XCTR support
  lib/crypto: aes: Add XTS support
  lib/crypto: aes: Add GCM support
  lib/crypto: aes: Add CCM support
  crypto: aes - Add ECB support using library
  crypto: aes - Add CBC and CBC-CTS support using library
  crypto: aes - Add CTR and XCTR support using library
  crypto: aes - Add XTS support using library
  crypto: aes - Add GCM support using library
  crypto: aes - Add CCM support using library
  x86/sev: Use new AES-GCM library
  lib/crypto: aesgcm: Remove old AES-GCM library
  crypto: aes - Remove AES-CBC-MAC support
  lib/crypto: aes: Remove aes_cbcmac_* functions
  fscrypt: Use aes_ecb_encrypt() for v1 key derivation
  KEYS: encrypted: Use AES-CBC library instead of crypto_skcipher
  KEYS: trusted: dcp: Use AES-GCM library instead of crypto_aead
  libceph: Use AES-CBC library in ceph_aes_crypt()
  libceph: Reimplement messenger v2 encryption using AES-GCM library
  wifi: mac80211: Use AES-CTR library in fils_aead.c
  wifi: mac80211: Use AES-GCM library for GMAC suite
  wifi: mac80211: Use crypto libraries for GCMP and CCMP suites
  macsec: Use AES-GCM library instead of crypto_aead
  wifi: ipw2x00: Use AES-CCM library
  mac802154: Use AES-CCM and AES-CTR libraries
  bpf: crypto: Use AES-CBC and AES-ECB libraries
  bpf: crypto: Add AES-GCM support
  smb: client: Use AES-GCM and AES-CCM libraries
  ksmbd: Use AES-GCM and AES-CCM libraries
  net: tipc: Use AES-GCM library instead of crypto_aead

 .../crypto/libcrypto-auth-encryption.rst      |   20 +
 .../crypto/libcrypto-unauth-encryption.rst    |   49 +
 Documentation/crypto/libcrypto.rst            |    2 +
 MAINTAINERS                                   |    2 -
 arch/x86/Kconfig                              |    2 +-
 arch/x86/coco/sev/core.c                      |   44 +-
 arch/x86/include/asm/sev.h                    |    2 +-
 crypto/Kconfig                                |   15 +-
 crypto/Makefile                               |    3 -
 crypto/aes.c                                  |  937 +++++++++++++-
 crypto/bpf_crypto_skcipher.c                  |   83 --
 crypto/testmgr.c                              |    6 +-
 drivers/crypto/starfive/jh7110-aes.c          |    2 +-
 drivers/net/Kconfig                           |    4 +-
 drivers/net/macsec.c                          |  327 ++---
 drivers/net/wireless/intel/ipw2x00/Kconfig    |    2 +-
 .../intel/ipw2x00/libipw_crypto_ccmp.c        |  117 +-
 drivers/virt/coco/sev-guest/sev-guest.c       |    7 +-
 fs/crypto/Kconfig                             |    2 +-
 fs/crypto/keysetup_v1.c                       |    5 +-
 fs/smb/client/Kconfig                         |    7 +-
 fs/smb/client/cifsencrypt.c                   |   14 -
 fs/smb/client/cifsfs.c                        |    4 -
 fs/smb/client/cifsglob.h                      |    8 -
 fs/smb/client/cifsproto.h                     |   89 --
 fs/smb/client/connect.c                       |   14 +-
 fs/smb/client/smb2ops.c                       |  275 ++--
 fs/smb/client/smb2pdu.c                       |    2 -
 fs/smb/client/smb2proto.h                     |    1 -
 fs/smb/client/smb2transport.c                 |   39 -
 fs/smb/server/Kconfig                         |    6 +-
 fs/smb/server/Makefile                        |    2 +-
 fs/smb/server/auth.c                          |  227 ----
 fs/smb/server/auth.h                          |    2 -
 fs/smb/server/crypto_ctx.c                    |  176 ---
 fs/smb/server/crypto_ctx.h                    |   32 -
 fs/smb/server/server.c                        |   14 +-
 fs/smb/server/smb2pdu.c                       |  133 +-
 include/crypto/aes-cbc-macs.h                 |   22 +-
 include/crypto/aes-cbc.h                      |   77 ++
 include/crypto/aes-ccm.h                      |  244 ++++
 include/crypto/aes-ctr.h                      |   56 +
 include/crypto/aes-ecb.h                      |   49 +
 include/crypto/aes-gcm.h                      |  249 ++++
 include/crypto/aes-xts.h                      |   87 ++
 include/crypto/gcm.h                          |   23 +-
 include/crypto/xts.h                          |   18 +-
 include/linux/bpf_crypto.h                    |   24 -
 include/linux/ceph/messenger.h                |   22 +-
 include/net/macsec.h                          |    5 +-
 kernel/bpf/Kconfig                            |   14 +
 kernel/bpf/Makefile                           |    4 +-
 kernel/bpf/crypto.c                           |  302 ++---
 lib/crypto/Kconfig                            |   41 +-
 lib/crypto/Makefile                           |    3 -
 lib/crypto/aes.c                              | 1146 ++++++++++++++++-
 lib/crypto/aesgcm.c                           |  721 -----------
 lib/crypto/tests/Kconfig                      |    6 +
 lib/crypto/tests/aes_cbc_macs_kunit.c         |   68 +-
 net/ceph/Kconfig                              |    5 +-
 net/ceph/crypto.c                             |   66 +-
 net/ceph/crypto.h                             |    3 +-
 net/ceph/messenger_v2.c                       |  963 +++++---------
 net/mac80211/Kconfig                          |    7 +-
 net/mac80211/Makefile                         |    1 -
 net/mac80211/aead_api.c                       |  113 --
 net/mac80211/aead_api.h                       |   23 -
 net/mac80211/aes_ccm.h                        |   39 +-
 net/mac80211/aes_gcm.h                        |   38 +-
 net/mac80211/aes_gmac.c                       |   85 +-
 net/mac80211/aes_gmac.h                       |   10 +-
 net/mac80211/fils_aead.c                      |   90 +-
 net/mac80211/key.c                            |   42 +-
 net/mac80211/key.h                            |    8 +-
 net/mac80211/wpa.c                            |   23 +-
 net/mac802154/Kconfig                         |    6 +-
 net/mac802154/llsec.c                         |  158 +--
 net/mac802154/llsec.h                         |    8 +-
 net/tipc/Kconfig                              |    4 +-
 net/tipc/crypto.c                             |  467 ++-----
 net/tipc/msg.h                                |    3 -
 net/tipc/sysctl.c                             |    6 +
 security/keys/Kconfig                         |    4 +-
 security/keys/encrypted-keys/encrypted.c      |  194 +--
 security/keys/trusted-keys/Kconfig            |    1 +
 security/keys/trusted-keys/trusted_dcp.c      |   69 +-
 86 files changed, 4167 insertions(+), 4126 deletions(-)
 create mode 100644 Documentation/crypto/libcrypto-auth-encryption.rst
 create mode 100644 Documentation/crypto/libcrypto-unauth-encryption.rst
 delete mode 100644 crypto/bpf_crypto_skcipher.c
 delete mode 100644 fs/smb/server/crypto_ctx.c
 delete mode 100644 fs/smb/server/crypto_ctx.h
 create mode 100644 include/crypto/aes-cbc.h
 create mode 100644 include/crypto/aes-ccm.h
 create mode 100644 include/crypto/aes-ctr.h
 create mode 100644 include/crypto/aes-ecb.h
 create mode 100644 include/crypto/aes-gcm.h
 create mode 100644 include/crypto/aes-xts.h
 delete mode 100644 include/linux/bpf_crypto.h
 delete mode 100644 lib/crypto/aesgcm.c
 delete mode 100644 net/mac80211/aead_api.c
 delete mode 100644 net/mac80211/aead_api.h


base-commit: 8cdeaa50eae8dad34885515f62559ee83e7e8dda
-- 
2.54.0


^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2026-07-08 11:48 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-07  5:34 [PATCH 00/33] Library APIs for AES encryption modes Eric Biggers
2026-07-07  5:34 ` [PATCH 01/33] crypto: xts - Split out __xts_verify_key() helper Eric Biggers
2026-07-07 13:20   ` Thomas Huth
2026-07-07  5:34 ` [PATCH 02/33] lib/crypto: aes: Add ECB support Eric Biggers
2026-07-07 13:59   ` Thomas Huth
2026-07-07 19:22     ` Eric Biggers
2026-07-08  5:29       ` Thomas Huth
2026-07-07  5:34 ` [PATCH 03/33] lib/crypto: aes: Add CBC and CBC-CTS support Eric Biggers
2026-07-07  5:34 ` [PATCH 04/33] lib/crypto: aes: Add CTR and XCTR support Eric Biggers
2026-07-07  5:34 ` [PATCH 05/33] lib/crypto: aes: Add XTS support Eric Biggers
2026-07-07  5:34 ` [PATCH 06/33] lib/crypto: aes: Add GCM support Eric Biggers
2026-07-07  5:34 ` [PATCH 07/33] lib/crypto: aes: Add CCM support Eric Biggers
2026-07-07  5:34 ` [PATCH 08/33] crypto: aes - Add ECB support using library Eric Biggers
2026-07-07  5:34 ` [PATCH 09/33] crypto: aes - Add CBC and CBC-CTS " Eric Biggers
2026-07-07  5:34 ` [PATCH 10/33] crypto: aes - Add CTR and XCTR " Eric Biggers
2026-07-07  5:34 ` [PATCH 11/33] crypto: aes - Add XTS " Eric Biggers
2026-07-07  5:34 ` [PATCH 12/33] crypto: aes - Add GCM " Eric Biggers
2026-07-07  5:34 ` [PATCH 13/33] crypto: aes - Add CCM " Eric Biggers
2026-07-07  5:34 ` [PATCH 14/33] x86/sev: Use new AES-GCM library Eric Biggers
2026-07-07  5:34 ` [PATCH 15/33] lib/crypto: aesgcm: Remove old " Eric Biggers
2026-07-07  5:34 ` [PATCH 16/33] crypto: aes - Remove AES-CBC-MAC support Eric Biggers
2026-07-07  5:34 ` [PATCH 17/33] lib/crypto: aes: Remove aes_cbcmac_* functions Eric Biggers
2026-07-07  5:34 ` [PATCH 18/33] fscrypt: Use aes_ecb_encrypt() for v1 key derivation Eric Biggers
2026-07-07  5:34 ` [PATCH 19/33] KEYS: encrypted: Use AES-CBC library instead of crypto_skcipher Eric Biggers
2026-07-07  5:34 ` [PATCH 20/33] KEYS: trusted: dcp: Use AES-GCM library instead of crypto_aead Eric Biggers
2026-07-07  5:34 ` [PATCH 21/33] libceph: Use AES-CBC library in ceph_aes_crypt() Eric Biggers
2026-07-07  5:34 ` [PATCH 22/33] libceph: Reimplement messenger v2 encryption using AES-GCM library Eric Biggers
2026-07-07  5:34 ` [PATCH 23/33] wifi: mac80211: Use AES-CTR library in fils_aead.c Eric Biggers
2026-07-07  5:34 ` [PATCH 24/33] wifi: mac80211: Use AES-GCM library for GMAC suite Eric Biggers
2026-07-07  5:34 ` [PATCH 25/33] wifi: mac80211: Use crypto libraries for GCMP and CCMP suites Eric Biggers
2026-07-07  5:34 ` [PATCH 26/33] macsec: Use AES-GCM library instead of crypto_aead Eric Biggers
2026-07-07  5:34 ` [PATCH 27/33] wifi: ipw2x00: Use AES-CCM library Eric Biggers
2026-07-07  5:34 ` [PATCH 28/33] mac802154: Use AES-CCM and AES-CTR libraries Eric Biggers
2026-07-07  5:34 ` [PATCH 29/33] bpf: crypto: Use AES-CBC and AES-ECB libraries Eric Biggers
2026-07-07 15:01   ` Vadim Fedorenko
2026-07-07 18:20     ` Eric Biggers
2026-07-07 22:50       ` Vadim Fedorenko
2026-07-07 23:16         ` Eric Biggers
2026-07-08 11:47           ` Vadim Fedorenko
2026-07-07  5:35 ` [PATCH 30/33] bpf: crypto: Add AES-GCM support Eric Biggers
2026-07-07 15:02   ` Vadim Fedorenko
2026-07-07  5:35 ` [PATCH 31/33] smb: client: Use AES-GCM and AES-CCM libraries Eric Biggers
2026-07-07  5:35 ` [PATCH 32/33] ksmbd: " Eric Biggers
2026-07-07 10:51   ` Namjae Jeon
2026-07-07  5:35 ` [PATCH 33/33] net: tipc: Use AES-GCM library instead of crypto_aead Eric Biggers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox