Commit 66a6d19c authored by Matt Mackall's avatar Matt Mackall Committed by Linus Torvalds

[PATCH] random: Use them throughout the tree

Move users of private rotl/rotr functions to rol32/ror32.  Crypto bits
verified with tcrypt.
Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 18684e6e
...@@ -64,23 +64,6 @@ ...@@ -64,23 +64,6 @@
#define AES_BLOCK_SIZE 16 #define AES_BLOCK_SIZE 16
static inline
u32 generic_rotr32 (const u32 x, const unsigned bits)
{
const unsigned n = bits % 32;
return (x >> n) | (x << (32 - n));
}
static inline
u32 generic_rotl32 (const u32 x, const unsigned bits)
{
const unsigned n = bits % 32;
return (x << n) | (x >> (32 - n));
}
#define rotl generic_rotl32
#define rotr generic_rotr32
/* /*
* #define byte(x, nr) ((unsigned char)((x) >> (nr*8))) * #define byte(x, nr) ((unsigned char)((x) >> (nr*8)))
*/ */
...@@ -191,26 +174,26 @@ gen_tabs (void) ...@@ -191,26 +174,26 @@ gen_tabs (void)
t = p; t = p;
fl_tab[0][i] = t; fl_tab[0][i] = t;
fl_tab[1][i] = rotl (t, 8); fl_tab[1][i] = rol32(t, 8);
fl_tab[2][i] = rotl (t, 16); fl_tab[2][i] = rol32(t, 16);
fl_tab[3][i] = rotl (t, 24); fl_tab[3][i] = rol32(t, 24);
t = ((u32) ff_mult (2, p)) | t = ((u32) ff_mult (2, p)) |
((u32) p << 8) | ((u32) p << 8) |
((u32) p << 16) | ((u32) ff_mult (3, p) << 24); ((u32) p << 16) | ((u32) ff_mult (3, p) << 24);
ft_tab[0][i] = t; ft_tab[0][i] = t;
ft_tab[1][i] = rotl (t, 8); ft_tab[1][i] = rol32(t, 8);
ft_tab[2][i] = rotl (t, 16); ft_tab[2][i] = rol32(t, 16);
ft_tab[3][i] = rotl (t, 24); ft_tab[3][i] = rol32(t, 24);
p = isb_tab[i]; p = isb_tab[i];
t = p; t = p;
il_tab[0][i] = t; il_tab[0][i] = t;
il_tab[1][i] = rotl (t, 8); il_tab[1][i] = rol32(t, 8);
il_tab[2][i] = rotl (t, 16); il_tab[2][i] = rol32(t, 16);
il_tab[3][i] = rotl (t, 24); il_tab[3][i] = rol32(t, 24);
t = ((u32) ff_mult (14, p)) | t = ((u32) ff_mult (14, p)) |
((u32) ff_mult (9, p) << 8) | ((u32) ff_mult (9, p) << 8) |
...@@ -218,9 +201,9 @@ gen_tabs (void) ...@@ -218,9 +201,9 @@ gen_tabs (void)
((u32) ff_mult (11, p) << 24); ((u32) ff_mult (11, p) << 24);
it_tab[0][i] = t; it_tab[0][i] = t;
it_tab[1][i] = rotl (t, 8); it_tab[1][i] = rol32(t, 8);
it_tab[2][i] = rotl (t, 16); it_tab[2][i] = rol32(t, 16);
it_tab[3][i] = rotl (t, 24); it_tab[3][i] = rol32(t, 24);
} }
} }
...@@ -232,14 +215,14 @@ gen_tabs (void) ...@@ -232,14 +215,14 @@ gen_tabs (void)
w = star_x(v); \ w = star_x(v); \
t = w ^ (x); \ t = w ^ (x); \
(y) = u ^ v ^ w; \ (y) = u ^ v ^ w; \
(y) ^= rotr(u ^ t, 8) ^ \ (y) ^= ror32(u ^ t, 8) ^ \
rotr(v ^ t, 16) ^ \ ror32(v ^ t, 16) ^ \
rotr(t,24) ror32(t,24)
/* initialise the key schedule from the user supplied key */ /* initialise the key schedule from the user supplied key */
#define loop4(i) \ #define loop4(i) \
{ t = rotr(t, 8); t = ls_box(t) ^ rco_tab[i]; \ { t = ror32(t, 8); t = ls_box(t) ^ rco_tab[i]; \
t ^= E_KEY[4 * i]; E_KEY[4 * i + 4] = t; \ t ^= E_KEY[4 * i]; E_KEY[4 * i + 4] = t; \
t ^= E_KEY[4 * i + 1]; E_KEY[4 * i + 5] = t; \ t ^= E_KEY[4 * i + 1]; E_KEY[4 * i + 5] = t; \
t ^= E_KEY[4 * i + 2]; E_KEY[4 * i + 6] = t; \ t ^= E_KEY[4 * i + 2]; E_KEY[4 * i + 6] = t; \
...@@ -247,7 +230,7 @@ gen_tabs (void) ...@@ -247,7 +230,7 @@ gen_tabs (void)
} }
#define loop6(i) \ #define loop6(i) \
{ t = rotr(t, 8); t = ls_box(t) ^ rco_tab[i]; \ { t = ror32(t, 8); t = ls_box(t) ^ rco_tab[i]; \
t ^= E_KEY[6 * i]; E_KEY[6 * i + 6] = t; \ t ^= E_KEY[6 * i]; E_KEY[6 * i + 6] = t; \
t ^= E_KEY[6 * i + 1]; E_KEY[6 * i + 7] = t; \ t ^= E_KEY[6 * i + 1]; E_KEY[6 * i + 7] = t; \
t ^= E_KEY[6 * i + 2]; E_KEY[6 * i + 8] = t; \ t ^= E_KEY[6 * i + 2]; E_KEY[6 * i + 8] = t; \
...@@ -257,7 +240,7 @@ gen_tabs (void) ...@@ -257,7 +240,7 @@ gen_tabs (void)
} }
#define loop8(i) \ #define loop8(i) \
{ t = rotr(t, 8); ; t = ls_box(t) ^ rco_tab[i]; \ { t = ror32(t, 8); ; t = ls_box(t) ^ rco_tab[i]; \
t ^= E_KEY[8 * i]; E_KEY[8 * i + 8] = t; \ t ^= E_KEY[8 * i]; E_KEY[8 * i + 8] = t; \
t ^= E_KEY[8 * i + 1]; E_KEY[8 * i + 9] = t; \ t ^= E_KEY[8 * i + 1]; E_KEY[8 * i + 9] = t; \
t ^= E_KEY[8 * i + 2]; E_KEY[8 * i + 10] = t; \ t ^= E_KEY[8 * i + 2]; E_KEY[8 * i + 10] = t; \
......
...@@ -567,14 +567,11 @@ static const u32 sb8[256] = { ...@@ -567,14 +567,11 @@ static const u32 sb8[256] = {
0xeaee6801, 0x8db2a283, 0xea8bf59e 0xeaee6801, 0x8db2a283, 0xea8bf59e
}; };
#define F1(D,m,r) ( (I = ((m) + (D))), (I=rol32(I,(r))), \
#define rol(n,x) ( ((x) << (n)) | ((x) >> (32-(n))) )
#define F1(D,m,r) ( (I = ((m) + (D))), (I=rol((r),I)), \
(((s1[I >> 24] ^ s2[(I>>16)&0xff]) - s3[(I>>8)&0xff]) + s4[I&0xff]) ) (((s1[I >> 24] ^ s2[(I>>16)&0xff]) - s3[(I>>8)&0xff]) + s4[I&0xff]) )
#define F2(D,m,r) ( (I = ((m) ^ (D))), (I=rol((r),I)), \ #define F2(D,m,r) ( (I = ((m) ^ (D))), (I=rol32(I,(r))), \
(((s1[I >> 24] - s2[(I>>16)&0xff]) + s3[(I>>8)&0xff]) ^ s4[I&0xff]) ) (((s1[I >> 24] - s2[(I>>16)&0xff]) + s3[(I>>8)&0xff]) ^ s4[I&0xff]) )
#define F3(D,m,r) ( (I = ((m) - (D))), (I=rol((r),I)), \ #define F3(D,m,r) ( (I = ((m) - (D))), (I=rol32(I,(r))), \
(((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) ) (((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) )
......
...@@ -33,13 +33,11 @@ struct cast6_ctx { ...@@ -33,13 +33,11 @@ struct cast6_ctx {
u8 Kr[12][4]; u8 Kr[12][4];
}; };
#define rol(n,x) ( ((x) << (n)) | ((x) >> (32-(n))) ) #define F1(D,r,m) ( (I = ((m) + (D))), (I=rol32(I,(r))), \
#define F1(D,r,m) ( (I = ((m) + (D))), (I=rol((r),I)), \
(((s1[I >> 24] ^ s2[(I>>16)&0xff]) - s3[(I>>8)&0xff]) + s4[I&0xff]) ) (((s1[I >> 24] ^ s2[(I>>16)&0xff]) - s3[(I>>8)&0xff]) + s4[I&0xff]) )
#define F2(D,r,m) ( (I = ((m) ^ (D))), (I=rol((r),I)), \ #define F2(D,r,m) ( (I = ((m) ^ (D))), (I=rol32(I,(r))), \
(((s1[I >> 24] - s2[(I>>16)&0xff]) + s3[(I>>8)&0xff]) ^ s4[I&0xff]) ) (((s1[I >> 24] - s2[(I>>16)&0xff]) + s3[(I>>8)&0xff]) ^ s4[I&0xff]) )
#define F3(D,r,m) ( (I = ((m) - (D))), (I=rol((r),I)), \ #define F3(D,r,m) ( (I = ((m) - (D))), (I=rol32(I,(r))), \
(((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) ) (((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) )
static const u32 s1[256] = { static const u32 s1[256] = {
......
...@@ -24,18 +24,6 @@ struct michael_mic_ctx { ...@@ -24,18 +24,6 @@ struct michael_mic_ctx {
}; };
static inline u32 rotl(u32 val, int bits)
{
return (val << bits) | (val >> (32 - bits));
}
static inline u32 rotr(u32 val, int bits)
{
return (val >> bits) | (val << (32 - bits));
}
static inline u32 xswap(u32 val) static inline u32 xswap(u32 val)
{ {
return ((val & 0x00ff00ff) << 8) | ((val & 0xff00ff00) >> 8); return ((val & 0x00ff00ff) << 8) | ((val & 0xff00ff00) >> 8);
...@@ -44,13 +32,13 @@ static inline u32 xswap(u32 val) ...@@ -44,13 +32,13 @@ static inline u32 xswap(u32 val)
#define michael_block(l, r) \ #define michael_block(l, r) \
do { \ do { \
r ^= rotl(l, 17); \ r ^= rol32(l, 17); \
l += r; \ l += r; \
r ^= xswap(l); \ r ^= xswap(l); \
l += r; \ l += r; \
r ^= rotl(l, 3); \ r ^= rol32(l, 3); \
l += r; \ l += r; \
r ^= rotr(l, 2); \ r ^= ror32(l, 2); \
l += r; \ l += r; \
} while (0) } while (0)
......
...@@ -31,11 +31,9 @@ ...@@ -31,11 +31,9 @@
#define SERPENT_BLOCK_SIZE 16 #define SERPENT_BLOCK_SIZE 16
#define PHI 0x9e3779b9UL #define PHI 0x9e3779b9UL
#define ROL(x,r) ((x) = ((x) << (r)) | ((x) >> (32-(r))))
#define ROR(x,r) ((x) = ((x) >> (r)) | ((x) << (32-(r))))
#define keyiter(a,b,c,d,i,j) \ #define keyiter(a,b,c,d,i,j) \
b ^= d; b ^= c; b ^= a; b ^= PHI ^ i; ROL(b,11); k[j] = b; b ^= d; b ^= c; b ^= a; b ^= PHI ^ i; b = rol32(b,11); k[j] = b;
#define loadkeys(x0,x1,x2,x3,i) \ #define loadkeys(x0,x1,x2,x3,i) \
x0=k[i]; x1=k[i+1]; x2=k[i+2]; x3=k[i+3]; x0=k[i]; x1=k[i+1]; x2=k[i+2]; x3=k[i+3];
...@@ -48,24 +46,24 @@ ...@@ -48,24 +46,24 @@
x1 ^= k[4*(i)+1]; x0 ^= k[4*(i)+0]; x1 ^= k[4*(i)+1]; x0 ^= k[4*(i)+0];
#define LK(x0,x1,x2,x3,x4,i) \ #define LK(x0,x1,x2,x3,x4,i) \
ROL(x0,13); \ x0=rol32(x0,13);\
ROL(x2,3); x1 ^= x0; x4 = x0 << 3; \ x2=rol32(x2,3); x1 ^= x0; x4 = x0 << 3; \
x3 ^= x2; x1 ^= x2; \ x3 ^= x2; x1 ^= x2; \
ROL(x1,1); x3 ^= x4; \ x1=rol32(x1,1); x3 ^= x4; \
ROL(x3,7); x4 = x1; \ x3=rol32(x3,7); x4 = x1; \
x0 ^= x1; x4 <<= 7; x2 ^= x3; \ x0 ^= x1; x4 <<= 7; x2 ^= x3; \
x0 ^= x3; x2 ^= x4; x3 ^= k[4*i+3]; \ x0 ^= x3; x2 ^= x4; x3 ^= k[4*i+3]; \
x1 ^= k[4*i+1]; ROL(x0,5); ROL(x2,22); \ x1 ^= k[4*i+1]; x0=rol32(x0,5); x2=rol32(x2,22);\
x0 ^= k[4*i+0]; x2 ^= k[4*i+2]; x0 ^= k[4*i+0]; x2 ^= k[4*i+2];
#define KL(x0,x1,x2,x3,x4,i) \ #define KL(x0,x1,x2,x3,x4,i) \
x0 ^= k[4*i+0]; x1 ^= k[4*i+1]; x2 ^= k[4*i+2]; \ x0 ^= k[4*i+0]; x1 ^= k[4*i+1]; x2 ^= k[4*i+2]; \
x3 ^= k[4*i+3]; ROR(x0,5); ROR(x2,22); \ x3 ^= k[4*i+3]; x0=ror32(x0,5); x2=ror32(x2,22);\
x4 = x1; x2 ^= x3; x0 ^= x3; \ x4 = x1; x2 ^= x3; x0 ^= x3; \
x4 <<= 7; x0 ^= x1; ROR(x1,1); \ x4 <<= 7; x0 ^= x1; x1=ror32(x1,1); \
x2 ^= x4; ROR(x3,7); x4 = x0 << 3; \ x2 ^= x4; x3=ror32(x3,7); x4 = x0 << 3; \
x1 ^= x0; x3 ^= x4; ROR(x0,13); \ x1 ^= x0; x3 ^= x4; x0=ror32(x0,13);\
x1 ^= x2; x3 ^= x2; ROR(x2,3); x1 ^= x2; x3 ^= x2; x2=ror32(x2,3);
#define S0(x0,x1,x2,x3,x4) \ #define S0(x0,x1,x2,x3,x4) \
x4 = x3; \ x4 = x3; \
......
...@@ -27,27 +27,22 @@ ...@@ -27,27 +27,22 @@
#define SHA1_DIGEST_SIZE 20 #define SHA1_DIGEST_SIZE 20
#define SHA1_HMAC_BLOCK_SIZE 64 #define SHA1_HMAC_BLOCK_SIZE 64
static inline u32 rol(u32 value, u32 bits)
{
return (((value) << (bits)) | ((value) >> (32 - (bits))));
}
/* blk0() and blk() perform the initial expand. */ /* blk0() and blk() perform the initial expand. */
/* I got the idea of expanding during the round function from SSLeay */ /* I got the idea of expanding during the round function from SSLeay */
# define blk0(i) block32[i] # define blk0(i) block32[i]
#define blk(i) (block32[i&15] = rol(block32[(i+13)&15]^block32[(i+8)&15] \ #define blk(i) (block32[i&15] = rol32(block32[(i+13)&15]^block32[(i+8)&15] \
^block32[(i+2)&15]^block32[i&15],1)) ^block32[(i+2)&15]^block32[i&15],1))
/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */ /* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5); \ #define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol32(v,5); \
w=rol(w,30); w=rol32(w,30);
#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5); \ #define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol32(v,5); \
w=rol(w,30); w=rol32(w,30);
#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30); #define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol32(v,5);w=rol32(w,30);
#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5); \ #define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol32(v,5); \
w=rol(w,30); w=rol32(w,30);
#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30); #define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol32(v,5);w=rol32(w,30);
struct sha1_ctx { struct sha1_ctx {
u64 count; u64 count;
......
...@@ -42,15 +42,10 @@ static inline u32 Maj(u32 x, u32 y, u32 z) ...@@ -42,15 +42,10 @@ static inline u32 Maj(u32 x, u32 y, u32 z)
return (x & y) | (z & (x | y)); return (x & y) | (z & (x | y));
} }
static inline u32 RORu32(u32 x, u32 y) #define e0(x) (ror32(x, 2) ^ ror32(x,13) ^ ror32(x,22))
{ #define e1(x) (ror32(x, 6) ^ ror32(x,11) ^ ror32(x,25))
return (x >> y) | (x << (32 - y)); #define s0(x) (ror32(x, 7) ^ ror32(x,18) ^ (x >> 3))
} #define s1(x) (ror32(x,17) ^ ror32(x,19) ^ (x >> 10))
#define e0(x) (RORu32(x, 2) ^ RORu32(x,13) ^ RORu32(x,22))
#define e1(x) (RORu32(x, 6) ^ RORu32(x,11) ^ RORu32(x,25))
#define s0(x) (RORu32(x, 7) ^ RORu32(x,18) ^ (x >> 3))
#define s1(x) (RORu32(x,17) ^ RORu32(x,19) ^ (x >> 10))
#define H0 0x6a09e667 #define H0 0x6a09e667
#define H1 0xbb67ae85 #define H1 0xbb67ae85
......
...@@ -11,10 +11,9 @@ ...@@ -11,10 +11,9 @@
#include <linux/string.h> #include <linux/string.h>
#include <linux/ncp.h> #include <linux/ncp.h>
#include <linux/bitops.h>
#include "ncpsign_kernel.h" #include "ncpsign_kernel.h"
#define rol32(i,c) (((((i)&0xffffffff)<<c)&0xffffffff)| \
(((i)&0xffffffff)>>(32-c)))
/* i386: 32-bit, little endian, handles mis-alignment */ /* i386: 32-bit, little endian, handles mis-alignment */
#ifdef __i386__ #ifdef __i386__
#define GET_LE32(p) (*(int *)(p)) #define GET_LE32(p) (*(int *)(p))
......
...@@ -1627,40 +1627,38 @@ xfs_da_hashname(uchar_t *name, int namelen) ...@@ -1627,40 +1627,38 @@ xfs_da_hashname(uchar_t *name, int namelen)
{ {
xfs_dahash_t hash; xfs_dahash_t hash;
#define ROTL(x,y) (((x) << (y)) | ((x) >> (32 - (y))))
#ifdef SLOWVERSION #ifdef SLOWVERSION
/* /*
* This is the old one-byte-at-a-time version. * This is the old one-byte-at-a-time version.
*/ */
for (hash = 0; namelen > 0; namelen--) { for (hash = 0; namelen > 0; namelen--)
hash = *name++ ^ ROTL(hash, 7); hash = *name++ ^ rol32(hash, 7);
}
return(hash); return(hash);
#else #else
/* /*
* Do four characters at a time as long as we can. * Do four characters at a time as long as we can.
*/ */
for (hash = 0; namelen >= 4; namelen -= 4, name += 4) { for (hash = 0; namelen >= 4; namelen -= 4, name += 4)
hash = (name[0] << 21) ^ (name[1] << 14) ^ (name[2] << 7) ^ hash = (name[0] << 21) ^ (name[1] << 14) ^ (name[2] << 7) ^
(name[3] << 0) ^ ROTL(hash, 7 * 4); (name[3] << 0) ^ rol32(hash, 7 * 4);
}
/* /*
* Now do the rest of the characters. * Now do the rest of the characters.
*/ */
switch (namelen) { switch (namelen) {
case 3: case 3:
return (name[0] << 14) ^ (name[1] << 7) ^ (name[2] << 0) ^ return (name[0] << 14) ^ (name[1] << 7) ^ (name[2] << 0) ^
ROTL(hash, 7 * 3); rol32(hash, 7 * 3);
case 2: case 2:
return (name[0] << 7) ^ (name[1] << 0) ^ ROTL(hash, 7 * 2); return (name[0] << 7) ^ (name[1] << 0) ^ rol32(hash, 7 * 2);
case 1: case 1:
return (name[0] << 0) ^ ROTL(hash, 7 * 1); return (name[0] << 0) ^ rol32(hash, 7 * 1);
case 0: case 0:
return hash; return hash;
} }
/* NOTREACHED */ /* NOTREACHED */
#endif #endif
#undef ROTL
return 0; /* keep gcc happy */ return 0; /* keep gcc happy */
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment