crypto: chacha20 - use rol32() macro from bitops.h
Subsystems (2)
PATCH 1/1 crypto: chacha20 - use rol32() macro from bitops.h
From: Eric Biggers <[email protected]>
For chacha20_block(), use the existing 32-bit left-rotate function instead of defining one ourselves.
Signed-off-by Eric Biggers <[email protected]>
--- lib/chacha20.c | 69 +++++++++++++++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 37 deletions(-)
lib/chacha20.c +32 -37
@@ -16,11 +16,6 @@#include <asm/unaligned.h> #include <crypto/chacha20.h> -static inline u32 rotl32 (u32 v,u8 n) -{ -return (v << n) | (v >> (sizeof (v) *8 - n)); -} -void chacha20_block (u32 *state,u32 *stream) {u32 x[16 ], *out = stream;
@@ -30,45 +25,45 @@ void chacha20_block(u32 *state, u32 *stream) x[i] = state[i];for (i =0 ; i <20 ; i +=2 ) { - x[0 ] += x[4 ]; x[12 ] =rotl32 (x[12 ] ^ x[0 ],16 ); - x[1 ] += x[5 ]; x[13 ] =rotl32 (x[13 ] ^ x[1 ],16 ); - x[2 ] += x[6 ]; x[14 ] =rotl32 (x[14 ] ^ x[2 ],16 ); - x[3 ] += x[7 ]; x[15 ] =rotl32 (x[15 ] ^ x[3 ],16 ); + x[0 ] += x[4 ]; x[12 ] =rol32 (x[12 ] ^ x[0 ],16 ); + x[1 ] += x[5 ]; x[13 ] =rol32 (x[13 ] ^ x[1 ],16 ); + x[2 ] += x[6 ]; x[14 ] =rol32 (x[14 ] ^ x[2 ],16 ); + x[3 ] += x[7 ]; x[15 ] =rol32 (x[15 ] ^ x[3 ],16 ); - x[8 ] += x[12 ]; x[4 ] =rotl32 (x[4 ] ^ x[8 ],12 ); - x[9 ] += x[13 ]; x[5 ] =rotl32 (x[5 ] ^ x[9 ],12 ); - x[10 ] += x[14 ]; x[6 ] =rotl32 (x[6 ] ^ x[10 ],12 ); - x[11 ] += x[15 ]; x[7 ] =rotl32 (x[7 ] ^ x[11 ],12 ); + x[8 ] += x[12 ]; x[4 ] =rol32 (x[4 ] ^ x[8 ],12 ); + x[9 ] += x[13 ]; x[5 ] =rol32 (x[5 ] ^ x[9 ],12 ); + x[10 ] += x[14 ]; x[6 ] =rol32 (x[6 ] ^ x[10 ],12 ); + x[11 ] += x[15 ]; x[7 ] =rol32 (x[7 ] ^ x[11 ],12 ); - x[0 ] += x[4 ]; x[12 ] =rotl32 (x[12 ] ^ x[0 ],8 ); - x[1 ] += x[5 ]; x[13 ] =rotl32 (x[13 ] ^ x[1 ],8 ); - x[2 ] += x[6 ]; x[14 ] =rotl32 (x[14 ] ^ x[2 ],8 ); - x[3 ] += x[7 ]; x[15 ] =rotl32 (x[15 ] ^ x[3 ],8 ); + x[0 ] += x[4 ]; x[12 ] =rol32 (x[12 ] ^ x[0 ],8 ); + x[1 ] += x[5 ]; x[13 ] =rol32 (x[13 ] ^ x[1 ],8 ); + x[2 ] += x[6 ]; x[14 ] =rol32 (x[14 ] ^ x[2 ],8 ); + x[3 ] += x[7 ]; x[15 ] =rol32 (x[15 ] ^ x[3 ],8 ); - x[8 ] += x[12 ]; x[4 ] =rotl32 (x[4 ] ^ x[8 ],7 ); - x[9 ] += x[13 ]; x[5 ] =rotl32 (x[5 ] ^ x[9 ],7 ); - x[10 ] += x[14 ]; x[6 ] =rotl32 (x[6 ] ^ x[10 ],7 ); - x[11 ] += x[15 ]; x[7 ] =rotl32 (x[7 ] ^ x[11 ],7 ); + x[8 ] += x[12 ]; x[4 ] =rol32 (x[4 ] ^ x[8 ],7 ); + x[9 ] += x[13 ]; x[5 ] =rol32 (x[5 ] ^ x[9 ],7 ); + x[10 ] += x[14 ]; x[6 ] =rol32 (x[6 ] ^ x[10 ],7 ); + x[11 ] += x[15 ]; x[7 ] =rol32 (x[7 ] ^ x[11 ],7 ); - x[0 ] += x[5 ]; x[15 ] =rotl32 (x[15 ] ^ x[0 ],16 ); - x[1 ] += x[6 ]; x[12 ] =rotl32 (x[12 ] ^ x[1 ],16 ); - x[2 ] += x[7 ]; x[13 ] =rotl32 (x[13 ] ^ x[2 ],16 ); - x[3 ] += x[4 ]; x[14 ] =rotl32 (x[14 ] ^ x[3 ],16 ); + x[0 ] += x[5 ]; x[15 ] =rol32 (x[15 ] ^ x[0 ],16 ); + x[1 ] += x[6 ]; x[12 ] =rol32 (x[12 ] ^ x[1 ],16 ); + x[2 ] += x[7 ]; x[13 ] =rol32 (x[13 ] ^ x[2 ],16 ); + x[3 ] += x[4 ]; x[14 ] =rol32 (x[14 ] ^ x[3 ],16 ); - x[10 ] += x[15 ]; x[5 ] =rotl32 (x[5 ] ^ x[10 ],12 ); - x[11 ] += x[12 ]; x[6 ] =rotl32 (x[6 ] ^ x[11 ],12 ); - x[8 ] += x[13 ]; x[7 ] =rotl32 (x[7 ] ^ x[8 ],12 ); - x[9 ] += x[14 ]; x[4 ] =rotl32 (x[4 ] ^ x[9 ],12 ); + x[10 ] += x[15 ]; x[5 ] =rol32 (x[5 ] ^ x[10 ],12 ); + x[11 ] += x[12 ]; x[6 ] =rol32 (x[6 ] ^ x[11 ],12 ); + x[8 ] += x[13 ]; x[7 ] =rol32 (x[7 ] ^ x[8 ],12 ); + x[9 ] += x[14 ]; x[4 ] =rol32 (x[4 ] ^ x[9 ],12 ); - x[0 ] += x[5 ]; x[15 ] =rotl32 (x[15 ] ^ x[0 ],8 ); - x[1 ] += x[6 ]; x[12 ] =rotl32 (x[12 ] ^ x[1 ],8 ); - x[2 ] += x[7 ]; x[13 ] =rotl32 (x[13 ] ^ x[2 ],8 ); - x[3 ] += x[4 ]; x[14 ] =rotl32 (x[14 ] ^ x[3 ],8 ); + x[0 ] += x[5 ]; x[15 ] =rol32 (x[15 ] ^ x[0 ],8 ); + x[1 ] += x[6 ]; x[12 ] =rol32 (x[12 ] ^ x[1 ],8 ); + x[2 ] += x[7 ]; x[13 ] =rol32 (x[13 ] ^ x[2 ],8 ); + x[3 ] += x[4 ]; x[14 ] =rol32 (x[14 ] ^ x[3 ],8 ); - x[10 ] += x[15 ]; x[5 ] =rotl32 (x[5 ] ^ x[10 ],7 ); - x[11 ] += x[12 ]; x[6 ] =rotl32 (x[6 ] ^ x[11 ],7 ); - x[8 ] += x[13 ]; x[7 ] =rotl32 (x[7 ] ^ x[8 ],7 ); - x[9 ] += x[14 ]; x[4 ] =rotl32 (x[4 ] ^ x[9 ],7 ); + x[10 ] += x[15 ]; x[5 ] =rol32 (x[5 ] ^ x[10 ],7 ); + x[11 ] += x[12 ]; x[6 ] =rol32 (x[6 ] ^ x[11 ],7 ); + x[8 ] += x[13 ]; x[7 ] =rol32 (x[7 ] ^ x[8 ],7 ); + x[9 ] += x[14 ]; x[4 ] =rol32 (x[4 ] ^ x[9 ],7 ); }for (i =0 ; i <ARRAY_SIZE (x); i++)
Signature · 1 line
2.15.1
Herbert Xu
maintainerQuoted 6 lines · Eric Biggers
From: Eric Biggers <[email protected]>
For
chacha20_block(), use the existing 32-bit left-rotate function instead of defining one ourselves.Signed-off-by Eric Biggers <[email protected]>
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt