From f0928320e79e1cce13d6a21cfdd602cf4a12ccf4 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Sat, 3 Oct 2015 20:14:18 +0200 Subject: siphash24: split out the finalization step --- src/basic/siphash24.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/basic/siphash24.c b/src/basic/siphash24.c index 66e5a6105..e7adfe48c 100644 --- a/src/basic/siphash24.c +++ b/src/basic/siphash24.c @@ -72,6 +72,16 @@ static void siphash_init(struct siphash *state, const uint8_t k[16]) { state->v3 = 0x7465646279746573ULL ^ k1; } +static u64 siphash24_finalize(struct siphash *state) { + state->v2 ^= 0xff; + SIPROUND(state); + SIPROUND(state); + SIPROUND(state); + SIPROUND(state); + + return state->v0 ^ state->v1 ^ state->v2 ^ state->v3; +} + /* SipHash-2-4 */ void siphash24(uint8_t out[8], const void *_in, size_t inlen, const uint8_t k[16]) { @@ -137,11 +147,8 @@ void siphash24(uint8_t out[8], const void *_in, size_t inlen, const uint8_t k[16 printf( "(%3d) v2 %08x %08x\n", ( int )inlen, ( u32 )( state.v2 >> 32 ), ( u32 )state.v2 ); printf( "(%3d) v3 %08x %08x\n", ( int )inlen, ( u32 )( state.v3 >> 32 ), ( u32 )state.v3 ); #endif - state.v2 ^= 0xff; - SIPROUND(&state); - SIPROUND(&state); - SIPROUND(&state); - SIPROUND(&state); - b = state.v0 ^ state.v1 ^ state.v2 ^ state.v3; + + b = siphash24_finalize(&state); + U64TO8_LE( out, b ); } -- cgit v1.2.3