factored dbg traces

main
JP Aumasson 2014-11-19 15:59:29 +01:00
parent a81a6663ed
commit 76342eb3aa
1 changed files with 31 additions and 30 deletions

View File

@ -15,6 +15,7 @@
#include <stdio.h>
#include <string.h>
/* default: SipHash-2-4 */
#define cROUNDS 2
#define dROUNDS 4
@ -22,11 +23,11 @@
#define U32TO8_LE(p, v) \
(p)[0] = (uint8_t)((v) ); (p)[1] = (uint8_t)((v) >> 8); \
(p)[2] = (uint8_t)((v) >> 16); (p)[3] = (uint8_t)((v) >> 24);
(p)[2] = (uint8_t)((v) >> 16); (p)[3] = (uint8_t)((v) >> 24);
#define U64TO8_LE(p, v) \
U32TO8_LE((p), (uint32_t)((v) )); \
U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
#define U8TO64_LE(p) \
(((uint64_t)((p)[0]) ) | \
@ -46,7 +47,22 @@ U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
v2 += v1; v1=ROTL(v1,17); v1 ^= v2; v2=ROTL(v2,32); \
} while(0)
/* SipHash-2-4 */
#ifdef DEBUG
#define TRACE \
do { \
printf( "(%3d) v0 %08x %08x\n", \
( int )inlen, ( uint32_t )( v0 >> 32 ), ( uint32_t )v0 ); \
printf( "(%3d) v1 %08x %08x\n", ( int )inlen, \
( uint32_t )( v1 >> 32 ), ( uint32_t )v1 ); \
printf( "(%3d) v2 %08x %08x\n", \
( int )inlen, ( uint32_t )( v2 >> 32 ), ( uint32_t )v2 ); \
printf( "(%3d) v3 %08x %08x\n", \
( int )inlen, ( uint32_t )( v3 >> 32 ), ( uint32_t )v3 ); \
} while(0)
#else
#define TRACE
#endif
int siphash( uint8_t *out, const uint8_t *in, uint64_t inlen, const uint8_t *k )
{
/* "somepseudorandomlygeneratedbytes" */
@ -74,15 +90,9 @@ int siphash( uint8_t *out, const uint8_t *in, uint64_t inlen, const uint8_t *k
for ( ; in != end; in += 8 )
{
m = U8TO64_LE( in );
#ifdef DEBUG
printf( "(%3d) v0 %08x %08x\n", ( int )inlen, ( uint32_t )( v0 >> 32 ), ( uint32_t )v0 );
printf( "(%3d) v1 %08x %08x\n", ( int )inlen, ( uint32_t )( v1 >> 32 ), ( uint32_t )v1 );
printf( "(%3d) v2 %08x %08x\n", ( int )inlen, ( uint32_t )( v2 >> 32 ), ( uint32_t )v2 );
printf( "(%3d) v3 %08x %08x\n", ( int )inlen, ( uint32_t )( v3 >> 32 ), ( uint32_t )v3 );
printf( "(%3d) compress %08x %08x\n", ( int )inlen, ( uint32_t )( m >> 32 ), ( uint32_t )m );
#endif
v3 ^= m;
TRACE;
for( i=0; i<cROUNDS; ++i ) SIPROUND;
v0 ^= m;
@ -107,24 +117,13 @@ int siphash( uint8_t *out, const uint8_t *in, uint64_t inlen, const uint8_t *k
case 0: break;
}
#ifdef DEBUG
printf( "(%3d) v0 %08x %08x\n", ( int )inlen, ( uint32_t )( v0 >> 32 ), ( uint32_t )v0 );
printf( "(%3d) v1 %08x %08x\n", ( int )inlen, ( uint32_t )( v1 >> 32 ), ( uint32_t )v1 );
printf( "(%3d) v2 %08x %08x\n", ( int )inlen, ( uint32_t )( v2 >> 32 ), ( uint32_t )v2 );
printf( "(%3d) v3 %08x %08x\n", ( int )inlen, ( uint32_t )( v3 >> 32 ), ( uint32_t )v3 );
printf( "(%3d) padding %08x %08x\n", ( int )inlen, ( uint32_t )( b >> 32 ), ( uint32_t )b );
#endif
v3 ^= b;
TRACE;
for( i=0; i<cROUNDS; ++i ) SIPROUND;
v0 ^= b;
#ifdef DEBUG
printf( "(%3d) v0 %08x %08x\n", ( int )inlen, ( uint32_t )( v0 >> 32 ), ( uint32_t )v0 );
printf( "(%3d) v1 %08x %08x\n", ( int )inlen, ( uint32_t )( v1 >> 32 ), ( uint32_t )v1 );
printf( "(%3d) v2 %08x %08x\n", ( int )inlen, ( uint32_t )( v2 >> 32 ), ( uint32_t )v2 );
printf( "(%3d) v3 %08x %08x\n", ( int )inlen, ( uint32_t )( v3 >> 32 ), ( uint32_t )v3 );
#endif
#ifndef DOUBLE
v2 ^= 0xff;
@ -132,6 +131,7 @@ int siphash( uint8_t *out, const uint8_t *in, uint64_t inlen, const uint8_t *k
v2 ^= 0xee;
#endif
TRACE;
for( i=0; i<dROUNDS; ++i ) SIPROUND;
b = v0 ^ v1 ^ v2 ^ v3;
@ -140,6 +140,7 @@ int siphash( uint8_t *out, const uint8_t *in, uint64_t inlen, const uint8_t *k
#ifdef DOUBLE
v1 ^= 0xdd;
TRACE;
for( i=0; i<dROUNDS; ++i ) SIPROUND;
b = v0 ^ v1 ^ v2 ^ v3;