path: root/crypto/fcrypt.c
AgeCommit message (Collapse)Author
2021-04-02crypto: fcrypt - Remove 'do while(0)' loop for single statement macroMilan Djurovic
Remove the 'do while(0)' loop in the macro, as it is not needed for single statement macros. Condense into one line. Signed-off-by: Milan Djurovic <> Signed-off-by: Herbert Xu <>
2021-02-10crypto: fcrypt - drop unneeded alignmaskArd Biesheuvel
The fcrypt implementation uses memcpy() to access the input and output buffers so there is no need to set an alignmask. Signed-off-by: Ard Biesheuvel <> Signed-off-by: Herbert Xu <>
2019-06-13crypto: make all generic algorithms set cra_driver_nameEric Biggers
Most generic crypto algorithms declare a driver name ending in "-generic". The rest don't declare a driver name and instead rely on the crypto API automagically appending "-generic" upon registration. Having multiple conventions is unnecessarily confusing and makes it harder to grep for all generic algorithms in the kernel source tree. But also, allowing NULL driver names is problematic because sometimes people fail to set it, e.g. the case fixed by commit 417980364300 ("crypto: cavium/zip - fix collision with generic cra_driver_name"). Of course, people can also incorrectly name their drivers "-generic". But that's much easier to notice / grep for. Therefore, let's make cra_driver_name mandatory. In preparation for this, this patch makes all generic algorithms set cra_driver_name. Signed-off-by: Eric Biggers <> Signed-off-by: Herbert Xu <>
2019-04-18crypto: run initcalls for generic implementations earlierEric Biggers
Use subsys_initcall for registration of all templates and generic algorithm implementations, rather than module_init. Then change cryptomgr to use arch_initcall, to place it before the subsys_initcalls. This is needed so that when both a generic and optimized implementation of an algorithm are built into the kernel (not loadable modules), the generic implementation is registered before the optimized one. Otherwise, the self-tests for the optimized implementation are unable to allocate the generic implementation for the new comparison fuzz tests. Note that on arm, a side effect of this change is that self-tests for generic implementations may run before the unaligned access handler has been installed. So, unaligned accesses will crash the kernel. This is arguably a good thing as it makes it easier to detect that type of bug. Signed-off-by: Eric Biggers <> Signed-off-by: Herbert Xu <>
2014-11-24crypto: prefix module autoloading with "crypto-"Kees Cook
This prefixes all crypto module loading with "crypto-" so we never run the risk of exposing module auto-loading to userspace via a crypto API, as demonstrated by Mathias Krause: Signed-off-by: Kees Cook <> Signed-off-by: Herbert Xu <>
2013-09-02crypto: fcrypt - Fix bitoperation for compilation with clangJan-Simon Möller
v2: Fix bug in statement as pointed out by Herbert Xu. Kudos to pipacs. Author: PaX Team <pageexec at> ML-Post: URL: Merge: Jan-Simon Möller <dl9pf at> Description: Fix for warning: linux/crypto/fcrypt.c:143:47: warning: signed shift result (0x598000000) requires 36 bits to represent, but 'int' only has 32 bits [-Wshift-overflow] Z(0xef), Z(0x70), Z(0xcf), Z(0xc2), Z(0x2a), Z(0xb3), Z(0x61), Z(0xad), ^~~~~~~ linux/crypto/fcrypt.c:113:29: note: expanded from macro 'Z' ^ ~~ linux/include/uapi/linux/byteorder/little_endian.h:38:53: note: expanded from macro '__cpu_to_be32' ^ linux/include/uapi/linux/swab.h:116:21: note: expanded from macro '__swab32' ___constant_swab32(x) : \ ^ linux/include/uapi/linux/swab.h:18:12: note: expanded from macro '___constant_swab32' (((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \ ^ Solution - make sure we don't exceed the 32 bit range. #define Z(x) cpu_to_be32(((x & 0x1f) << 27) | (x >> 5)) Signed-off-by: Jan-Simon Möller <> CC: CC: CC: CC: CC: CC: CC: Signed-off-by: Herbert Xu <>
2012-08-01crypto: cleanup - remove unneeded crypto_alg.cra_list initializationsJussi Kivilinna
Initialization of cra_list is currently mixed, most ciphers initialize this field and most shashes do not. Initialization however is not needed at all since cra_list is initialized/overwritten in __crypto_register_alg() with list_add(). Therefore perform cleanup to remove all unneeded initializations of this field in 'crypto/'. Signed-off-by: Jussi Kivilinna <> Signed-off-by: Herbert Xu <>
2010-02-16crypto: fcrypt - Fix checkpatch errorsRichard Hartmann
Signed-off-by: Richard Hartmann <> Signed-off-by: Herbert Xu <>
2008-12-25crypto: remove uses of __constant_{endian} helpersHarvey Harrison
Base versions handle constant folding just fine. Signed-off-by: Harvey Harrison <> Signed-off-by: Herbert Xu <>
2008-04-21[CRYPTO] all: Clean up init()/fini()Kamalesh Babulal
On Thu, Mar 27, 2008 at 03:40:36PM +0100, Bodo Eggert wrote: > Kamalesh Babulal <> wrote: > > > This patch cleanups the crypto code, replaces the init() and fini() > > with the <algorithm name>_init/_fini > > This part ist OK. > > > or init/fini_<algorithm name> (if the > > <algorithm name>_init/_fini exist) > > Having init_foo and foo_init won't be a good thing, will it? I'd start > confusing them. > > What about foo_modinit instead? Thanks for the suggestion, the init() is replaced with <algorithm name>_mod_init () and fini () is replaced with <algorithm name>_mod_fini. Signed-off-by: Kamalesh Babulal <> Signed-off-by: Herbert Xu <>
2007-12-05fcrypt endianness misannotationsAl Viro
Signed-off-by: Al Viro <> Signed-off-by: Linus Torvalds <>
2007-10-19crypto: convert "crypto" subdirectory to UTF-8John Anthony Kazos Jr
Convert the subdirectory "crypto" to UTF-8. The files changed are <crypto/fcrypt.c> and <crypto/api.c>. Signed-off-by: John Anthony Kazos Jr. <> Signed-off-by: Adrian Bunk <>
2007-02-07[CRYPTO] fcrypt: Add FCrypt from RxRPCDavid Howells
Add a crypto module to provide FCrypt encryption as used by RxRPC. Signed-Off-By: David Howells <> Signed-off-by: Herbert Xu <>