linux/drivers/crypto
Linus Torvalds 13150742b0 Crypto library updates for 6.17
This is the main crypto library pull request for 6.17. The main focus
 this cycle is on reorganizing the SHA-1 and SHA-2 code, providing
 high-quality library APIs for SHA-1 and SHA-2 including HMAC support,
 and establishing conventions for lib/crypto/ going forward:
 
  - Migrate the SHA-1 and SHA-512 code (and also SHA-384 which shares
    most of the SHA-512 code) into lib/crypto/. This includes both the
    generic and architecture-optimized code. Greatly simplify how the
    architecture-optimized code is integrated. Add an easy-to-use
    library API for each SHA variant, including HMAC support. Finally,
    reimplement the crypto_shash support on top of the library API.
 
  - Apply the same reorganization to the SHA-256 code (and also SHA-224
    which shares most of the SHA-256 code). This is a somewhat smaller
    change, due to my earlier work on SHA-256. But this brings in all
    the same additional improvements that I made for SHA-1 and SHA-512.
 
 There are also some smaller changes:
 
  - Move the architecture-optimized ChaCha, Poly1305, and BLAKE2s code
    from arch/$(SRCARCH)/lib/crypto/ to lib/crypto/$(SRCARCH)/. For
    these algorithms it's just a move, not a full reorganization yet.
 
  - Fix the MIPS chacha-core.S to build with the clang assembler.
 
  - Fix the Poly1305 functions to work in all contexts.
 
  - Fix a performance regression in the x86_64 Poly1305 code.
 
  - Clean up the x86_64 SHA-NI optimized SHA-1 assembly code.
 
 Note that since the new organization of the SHA code is much simpler,
 the diffstat of this pull request is negative, despite the addition of
 new fully-documented library APIs for multiple SHA and HMAC-SHA
 variants. These APIs will allow further simplifications across the
 kernel as users start using them instead of the old-school crypto API.
 (I've already written a lot of such conversion patches, removing over
 1000 more lines of code. But most of those will target 6.18 or later.)
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQSacvsUNc7UX4ntmEPzXCl4vpKOKwUCaIZ93BQcZWJpZ2dlcnNA
 a2VybmVsLm9yZwAKCRDzXCl4vpKOK8HCAQD3O9P0qd6wscne5XuRwaybzKHQ2AqU
 OlhlDZWQQEvYAgD/aa6KP/DS+8RKGj0TBn6bACAJyXyDygFXq5a5s9pGzAs=
 =UmMM
 -----END PGP SIGNATURE-----

Merge tag 'libcrypto-updates-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux

Pull crypto library updates from Eric Biggers:
 "This is the main crypto library pull request for 6.17. The main focus
  this cycle is on reorganizing the SHA-1 and SHA-2 code, providing
  high-quality library APIs for SHA-1 and SHA-2 including HMAC support,
  and establishing conventions for lib/crypto/ going forward:

   - Migrate the SHA-1 and SHA-512 code (and also SHA-384 which shares
     most of the SHA-512 code) into lib/crypto/. This includes both the
     generic and architecture-optimized code. Greatly simplify how the
     architecture-optimized code is integrated. Add an easy-to-use
     library API for each SHA variant, including HMAC support. Finally,
     reimplement the crypto_shash support on top of the library API.

   - Apply the same reorganization to the SHA-256 code (and also SHA-224
     which shares most of the SHA-256 code). This is a somewhat smaller
     change, due to my earlier work on SHA-256. But this brings in all
     the same additional improvements that I made for SHA-1 and SHA-512.

  There are also some smaller changes:

   - Move the architecture-optimized ChaCha, Poly1305, and BLAKE2s code
     from arch/$(SRCARCH)/lib/crypto/ to lib/crypto/$(SRCARCH)/. For
     these algorithms it's just a move, not a full reorganization yet.

   - Fix the MIPS chacha-core.S to build with the clang assembler.

   - Fix the Poly1305 functions to work in all contexts.

   - Fix a performance regression in the x86_64 Poly1305 code.

   - Clean up the x86_64 SHA-NI optimized SHA-1 assembly code.

  Note that since the new organization of the SHA code is much simpler,
  the diffstat of this pull request is negative, despite the addition of
  new fully-documented library APIs for multiple SHA and HMAC-SHA
  variants.

  These APIs will allow further simplifications across the kernel as
  users start using them instead of the old-school crypto API. (I've
  already written a lot of such conversion patches, removing over 1000
  more lines of code. But most of those will target 6.18 or later)"

* tag 'libcrypto-updates-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux: (67 commits)
  lib/crypto: arm64/sha512-ce: Drop compatibility macros for older binutils
  lib/crypto: x86/sha1-ni: Convert to use rounds macros
  lib/crypto: x86/sha1-ni: Minor optimizations and cleanup
  crypto: sha1 - Remove sha1_base.h
  lib/crypto: x86/sha1: Migrate optimized code into library
  lib/crypto: sparc/sha1: Migrate optimized code into library
  lib/crypto: s390/sha1: Migrate optimized code into library
  lib/crypto: powerpc/sha1: Migrate optimized code into library
  lib/crypto: mips/sha1: Migrate optimized code into library
  lib/crypto: arm64/sha1: Migrate optimized code into library
  lib/crypto: arm/sha1: Migrate optimized code into library
  crypto: sha1 - Use same state format as legacy drivers
  crypto: sha1 - Wrap library and add HMAC support
  lib/crypto: sha1: Add HMAC support
  lib/crypto: sha1: Add SHA-1 library functions
  lib/crypto: sha1: Rename sha1_init() to sha1_init_raw()
  crypto: x86/sha1 - Rename conflicting symbol
  lib/crypto: sha2: Add hmac_sha*_init_usingrawkey()
  lib/crypto: arm/poly1305: Remove unneeded empty weak function
  lib/crypto: x86/poly1305: Fix performance regression on short messages
  ...
2025-07-28 17:58:52 -07:00
..
allwinner crypto: sun8i-ce - move fallback ahash_request to the end of the struct 2025-05-19 13:48:48 +08:00
amcc crypto: crypto4xx - Remove ahash-related code 2025-05-12 13:32:52 +08:00
amlogic crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
aspeed crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
axis treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
bcm crypto: bcm - set memory to zero only once 2025-02-22 15:56:03 +08:00
caam crypto: caam - Add support for i.MX8QM 2025-04-16 15:16:21 +08:00
cavium crypto: cavium/zip - Remove driver 2025-04-07 13:22:25 +08:00
ccp Core x86 updates for v6.16: 2025-05-26 16:04:17 -07:00
ccree crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
chelsio crypto: chelsio - Use crypto_shash_export_core 2025-06-26 12:55:22 +08:00
gemini crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
hisilicon crypto: hisilicon/qm - replace devm_kzalloc with devm_kcalloc 2025-05-05 18:20:46 +08:00
inside-secure crypto: inside-secure - remove crc32 support 2025-06-30 09:31:56 -07:00
intel crypto: qat - Use crypto_shash_export_core 2025-06-26 12:55:22 +08:00
marvell crypto: marvell/cesa - Do not chain submitted requests 2025-05-21 13:27:46 +08:00
nx crypto: nx - Use API partial block handling 2025-04-23 15:52:47 +08:00
qce crypto: qce - revert "use __free() for a buffer that's always freed" 2024-12-21 22:46:24 +08:00
rockchip crypto: rk3288 - use API helpers to setup fallback request 2025-04-16 15:16:21 +08:00
starfive crypto: sha256 - Wrap library and add HMAC support 2025-07-04 10:23:11 -07:00
stm32 crypto: stm32 - remove crc32 and crc32c support 2025-06-30 09:31:56 -07:00
tegra crypto: tegra - use API helpers to setup fallback request 2025-04-16 15:16:21 +08:00
virtio crypto: virtio - Erase some sensitive memory when it is freed 2025-03-15 15:08:54 +08:00
xilinx crypto: zynqmp-sha - Fix partial block implementation 2025-05-05 18:20:46 +08:00
atmel-aes-regs.h
atmel-aes.c crypto: atmel - add CRYPTO_ALG_KERN_DRIVER_ONLY flag 2025-04-16 15:16:21 +08:00
atmel-authenc.h
atmel-ecc.c crypto: atmel - Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-10-05 13:22:05 +08:00
atmel-i2c.c crypto: atmel-sha204a - add reading from otp zone 2024-05-10 17:15:25 +08:00
atmel-i2c.h crypto: atmel-sha204a - add reading from otp zone 2024-05-10 17:15:25 +08:00
atmel-sha-regs.h
atmel-sha.c crypto: atmel - add CRYPTO_ALG_KERN_DRIVER_ONLY flag 2025-04-16 15:16:21 +08:00
atmel-sha204a.c crypto: atmel-sha204a - Set hwrng quality to lowest possible 2025-04-23 09:32:57 +08:00
atmel-tdes-regs.h
atmel-tdes.c crypto: atmel - add CRYPTO_ALG_KERN_DRIVER_ONLY flag 2025-04-16 15:16:21 +08:00
exynos-rng.c crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
geode-aes.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
geode-aes.h
hifn_795x.c crypto: hifn_795x - Remove unused hifn_*_command structs 2024-05-31 17:34:56 +08:00
img-hash.c crypto: sha1 - Wrap library and add HMAC support 2025-07-14 08:59:20 -07:00
Kconfig s390/crypto: Select crypto engine in Kconfig when PAES is chosen 2025-06-02 10:49:52 +02:00
Makefile crypto: cavium - Move cpt and nitrox rules into cavium Makefile 2025-04-07 13:22:25 +08:00
mxs-dcp.c crypto: mxs-dcp - Only set OTP_KEY bit for OTP key 2025-03-08 16:22:23 +08:00
omap-aes-gcm.c
omap-aes.c crypto: omap-aes - use dev_groups to register attribute groups 2025-04-07 13:22:26 +08:00
omap-aes.h crypto: omap - switch from scatter_walk to plain offset 2025-01-14 11:38:32 +08:00
omap-crypto.c
omap-crypto.h
omap-des.c crypto: omap - switch from scatter_walk to plain offset 2025-01-14 11:38:32 +08:00
omap-sham.c crypto: omap-sham - use dev_groups to register attribute groups 2025-04-07 13:22:26 +08:00
padlock-aes.c
padlock-sha.c crypto: padlock-sha - Use core import and export for fallback 2025-05-05 18:20:46 +08:00
qcom-rng.c crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
s5p-sss.c crypto: s5p-sss - Add missing header inclusions 2025-04-16 15:16:21 +08:00
sa2ul.c crypto: sa2ul - Use proper helpers to setup request 2025-04-07 13:22:26 +08:00
sa2ul.h
sahara.c crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
talitos.c crypto: drivers - Switch back to struct platform_driver::remove() 2024-10-19 08:44:30 +08:00
talitos.h