7 static void step(int *rng_inout)
12 for (i = 0; i < 8; i++) x = (x << 1) ^ ((x >> 31)&TAP);
16 static void fill(int *rng_inout, unsigned char *p, size_t sz)
17 { while (sz--) { *p++ = *rng_inout&0xff; step(rng_inout); } }
19 static void dump(const char *name, const unsigned char *p, size_t sz)
23 printf("%s = ", name);
25 fputs("\"\"", stdout);
26 else for (i = 0; i < sz; i++) {
28 else if (!(i%32)) fputs("\n ", stdout);
29 else if (!(i%4)) fputc(' ', stdout);
37 unsigned char k[16], h[8];
38 unsigned char msg[1024];
42 for (i = 0; i <= sizeof(msg); i++) {
43 if (i) fputc('\n', stdout);
44 fill(&rng, k, sizeof(k)); dump("k", k, sizeof(k));
45 fill(&rng, msg, i); dump("m", msg, i);
46 siphash(msg, i, k, h, sizeof(h)); dump("h", h, sizeof(h));