blob: ccbeb20cca12feac4c6b045d5e9e01d5d3144100 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <linux/kernel.h>
#define SIPROUND \
do { \
s64[0] += s64[1]; s64[1] = rol64(s64[1], 13); s64[1] ^= s64[0]; s64[0] = rol64(s64[0], 32); \
s64[2] += s64[3]; s64[3] = rol64(s64[3], 16); s64[3] ^= s64[2]; \
s64[0] += s64[3]; s64[3] = rol64(s64[3], 21); s64[3] ^= s64[0]; \
s64[2] += s64[1]; s64[1] = rol64(s64[1], 17); s64[1] ^= s64[2]; s64[2] = rol64(s64[2], 32); \
} while (0)
void mix_siphash(u32 s[4], const u32 v[4])
{
u64 *s64 = (u64 *)s;
const u64 *v64 = (const u64 *)v;
size_t i;
for (i = 0; i < 2; ++i) {
s64[3] ^= v64[i];
SIPROUND;
s64[0] ^= v64[i];
}
}
|