aboutsummaryrefslogtreecommitdiff
path: root/siphash.c
diff options
context:
space:
mode:
authorJP Aumasson <jeanphilippe.aumasson@gmail.com>2021-02-20 20:50:05 +0100
committerJP Aumasson <jeanphilippe.aumasson@gmail.com>2021-02-20 20:50:05 +0100
commit4ce8f49e22ceb7ad973a21963884a8c3dc64c662 (patch)
treeac62e10a28986c538e127abcd54a01d8f73bb30d /siphash.c
parentMerge pull request #34 from veorq/moretest (diff)
downloadsiphash-4ce8f49e22ceb7ad973a21963884a8c3dc64c662.tar.gz
siphash-4ce8f49e22ceb7ad973a21963884a8c3dc64c662.tar.xz
typechange
Diffstat (limited to 'siphash.c')
-rw-r--r--siphash.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/siphash.c b/siphash.c
index 065a593..f803744 100644
--- a/siphash.c
+++ b/siphash.c
@@ -76,19 +76,22 @@
#define TRACE
#endif
-int siphash(const uint8_t *in, const size_t inlen, const uint8_t *k,
- uint8_t *out, const size_t outlen) {
+int siphash(const void *in, const size_t inlen, const void *k, uint8_t *out,
+ const size_t outlen) {
+
+ unsigned char *ni = (unsigned char *)in;
+ unsigned char *kk = (unsigned char *)k;
assert((outlen == 8) || (outlen == 16));
uint64_t v0 = UINT64_C(0x736f6d6570736575);
uint64_t v1 = UINT64_C(0x646f72616e646f6d);
uint64_t v2 = UINT64_C(0x6c7967656e657261);
uint64_t v3 = UINT64_C(0x7465646279746573);
- uint64_t k0 = U8TO64_LE(k);
- uint64_t k1 = U8TO64_LE(k + 8);
+ uint64_t k0 = U8TO64_LE(kk);
+ uint64_t k1 = U8TO64_LE(kk + 8);
uint64_t m;
int i;
- const uint8_t *end = in + inlen - (inlen % sizeof(uint64_t));
+ const uint8_t *end = ni + inlen - (inlen % sizeof(uint64_t));
const int left = inlen & 7;
uint64_t b = ((uint64_t)inlen) << 56;
v3 ^= k1;
@@ -99,8 +102,8 @@ int siphash(const uint8_t *in, const size_t inlen, const uint8_t *k,
if (outlen == 16)
v1 ^= 0xee;
- for (; in != end; in += 8) {
- m = U8TO64_LE(in);
+ for (; ni != end; ni += 8) {
+ m = U8TO64_LE(ni);
v3 ^= m;
TRACE;
@@ -112,19 +115,19 @@ int siphash(const uint8_t *in, const size_t inlen, const uint8_t *k,
switch (left) {
case 7:
- b |= ((uint64_t)in[6]) << 48;
+ b |= ((uint64_t)ni[6]) << 48;
case 6:
- b |= ((uint64_t)in[5]) << 40;
+ b |= ((uint64_t)ni[5]) << 40;
case 5:
- b |= ((uint64_t)in[4]) << 32;
+ b |= ((uint64_t)ni[4]) << 32;
case 4:
- b |= ((uint64_t)in[3]) << 24;
+ b |= ((uint64_t)ni[3]) << 24;
case 3:
- b |= ((uint64_t)in[2]) << 16;
+ b |= ((uint64_t)ni[2]) << 16;
case 2:
- b |= ((uint64_t)in[1]) << 8;
+ b |= ((uint64_t)ni[1]) << 8;
case 1:
- b |= ((uint64_t)in[0]);
+ b |= ((uint64_t)ni[0]);
break;
case 0:
break;