X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fcrypto%2Fshachain%2Fshachain.c;h=d4508a05a0f7addf2e33442ff1f13d3564bab9e7;hp=2c9cb3d5464c42855d7e9d3dc0c18455ed6907ea;hb=8ad6ab9ce9b78c6b28b727b11d571d11856479c6;hpb=2a03b7b304b185680ff0255731c671b71a7fb1b2 diff --git a/ccan/crypto/shachain/shachain.c b/ccan/crypto/shachain/shachain.c index 2c9cb3d5..d4508a05 100644 --- a/ccan/crypto/shachain/shachain.c +++ b/ccan/crypto/shachain/shachain.c @@ -66,10 +66,16 @@ void shachain_from_seed(const struct sha256 *seed, shachain_index_t index, derive(0, index, seed, hash); } +shachain_index_t shachain_next_index(const struct shachain *chain) +{ + return chain->min_index - 1; +} + void shachain_init(struct shachain *chain) { chain->num_valid = 0; - chain->min_index = 0; + /* This is 0 in the case where SHACHAIN_BITS is 64. */ + chain->min_index = (shachain_index_t)((UINT64_MAX >> (64 - SHACHAIN_BITS)) + 1); } bool shachain_add_hash(struct shachain *chain, @@ -78,9 +84,7 @@ bool shachain_add_hash(struct shachain *chain, unsigned int i, pos; /* You have to insert them in order! */ - assert(index == chain->min_index - 1 || - (index == (shachain_index_t)(UINT64_MAX >> (64 - SHACHAIN_BITS)) - && chain->num_valid == 0)); + assert(index == shachain_next_index(chain)); pos = count_trailing_zeroes(index);