1 #include <ccan/crypto/shachain/shachain.h>
2 /* Include the C files directly. */
3 #include <ccan/crypto/shachain/shachain.c>
4 #include <ccan/tap/tap.h>
11 struct shachain chain;
12 struct sha256 expect[NUM_TESTS];
15 /* This is how many tests you plan to run */
16 plan_tests(NUM_TESTS * 3 + NUM_TESTS * (NUM_TESTS + 1) - 1);
18 memset(&seed, 0, sizeof(seed));
19 /* Generate a whole heap. */
20 for (i = 0xFFFFFFFFFFFFFFFFULL;
21 i > 0xFFFFFFFFFFFFFFFFULL - NUM_TESTS;
23 int expidx = 0xFFFFFFFFFFFFFFFFULL - i;
24 shachain_from_seed(&seed, i, &expect[expidx]);
25 if (i != 0xFFFFFFFFFFFFFFFFULL)
26 ok1(memcmp(&expect[expidx], &expect[expidx-1],
27 sizeof(expect[expidx])));
30 shachain_init(&chain);
32 for (i = 0xFFFFFFFFFFFFFFFFULL;
33 i > 0xFFFFFFFFFFFFFFFFULL - NUM_TESTS;
36 int expidx = 0xFFFFFFFFFFFFFFFFULL - i;
37 ok1(shachain_add_hash(&chain, i, &expect[expidx]));
38 for (j = i; j != 0; j++) {
39 ok1(shachain_get_hash(&chain, j, &hash));
40 expidx = 0xFFFFFFFFFFFFFFFFULL - j;
41 ok1(memcmp(&hash, &expect[expidx], sizeof(hash)) == 0);
43 ok1(!shachain_get_hash(&chain, i-1, &hash));