Make *c* and *d* rounds less intrusively configurable

main
Kyle Altendorf 2019-09-10 08:43:15 -04:00
parent 61faf151b8
commit e802f9cc56
4 changed files with 32 additions and 9 deletions

View File

@ -42,13 +42,20 @@ verifies 64 test vectors, and
does the same and prints intermediate values. does the same and prints intermediate values.
The code can be adapted to implement SipHash-*c*-*d*, the version of SipHash The code can be adapted to implement SipHash-*c*-*d*, the version of SipHash
with *c* compression rounds and *d* finalization rounds, by tweaking the with *c* compression rounds and *d* finalization rounds, by defining `cROUNDS`
lines or `dROUNDS` when compiling. This can be done with `-D` command line arguments
```C to many compilers such as below.
#define cROUNDS 2
#define dROUNDS 4 ```sh
gcc -Wall --std=c99 -DcROUNDS=2 -DdROUNDS=4 siphash.c halfsiphash.c test.c -o test
``` ```
The `makefile` also takes *c* and *d* rounds values as parameters.
```sh
make cROUNDS=2 dROUNDS=4
```
Obviously, if the number of rounds is modified then the test vectors Obviously, if the number of rounds is modified then the test vectors
won't verify. won't verify.

View File

@ -19,8 +19,12 @@
#include <string.h> #include <string.h>
/* default: SipHash-2-4 */ /* default: SipHash-2-4 */
#define cROUNDS 2 #ifndef cROUNDS
#define dROUNDS 4 #define cROUNDS 2
#endif
#ifndef dROUNDS
#define dROUNDS 4
#endif
#define ROTL(x, b) (uint32_t)(((x) << (b)) | ((x) >> (32 - (b)))) #define ROTL(x, b) (uint32_t)(((x) << (b)) | ((x) >> (32 - (b))))

View File

@ -3,6 +3,14 @@ CFLAGS=-Wall --std=c99
SRC=siphash.c halfsiphash.c test.c SRC=siphash.c halfsiphash.c test.c
BIN=test debug vectors BIN=test debug vectors
ifneq ($(cROUNDS),)
CFLAGS:=$(CFLAGS) -DcROUNDS=$(cROUNDS)
endif
ifneq ($(dROUNDS),)
CFLAGS:=$(CFLAGS) -DdROUNDS=$(dROUNDS)
endif
all: $(BIN) all: $(BIN)
test: $(SRC) test: $(SRC)

View File

@ -20,8 +20,12 @@
#include <string.h> #include <string.h>
/* default: SipHash-2-4 */ /* default: SipHash-2-4 */
#define cROUNDS 2 #ifndef cROUNDS
#define dROUNDS 4 #define cROUNDS 2
#endif
#ifndef dROUNDS
#define dROUNDS 4
#endif
#define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b)))) #define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b))))