#include "config.h" #include #include /** * crypto/shachain - compactly-representable chain of 256-bit numbers. * * This code produces a practically infinite (2^64) chain of 256-bit numbers * from a single number, such that you can't derive element N from any element * less than N, but can efficiently derive element N from a limited number * of elements >= N. * * License: BSD-MIT * Author: Rusty Russell * * Example: * * #include * #include * #include * #include * #include * * int main(int argc, char *argv[]) * { * size_t i, j, limit = 10; * struct sha256 seed; * * if (argc < 2) * errx(1, "Usage: %s []", argv[0]); * sha256(&seed, argv[1], strlen(argv[1])); * if (argv[2]) * limit = atol(argv[2]); * * for (i = 0; i < limit; i++) { * struct sha256 v; * shachain_from_seed(&seed, i, &v); * printf("%zu: ", i); * for (j = 0; j < sizeof(v.u.u8); j++) * printf("%02x", v.u.u8[j]); * printf("\n"); * } * return 0; * } */ int main(int argc, char *argv[]) { /* Expect exactly one argument */ if (argc != 2) return 1; if (strcmp(argv[1], "depends") == 0) { printf("ccan/ilog\n"); printf("ccan/crypto/sha256\n"); return 0; } return 1; }