pub fn iterativeApi(comptime Hash: anytype) !void Hash46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62pub fn iterativeApi(comptime Hash: anytype) !void {
// Sum(1..32) = 528
var buf: [528]u8 = @splat(0);
var len: usize = 0;
const seed = 0;
var hasher = initMaybeSeed(Hash, seed);
for (1..32) |i| {
const r = hashMaybeSeed(Hash.hash, seed, buf[0 .. len + i]);
hasher.update(buf[len..][0..i]);
const f1 = hasher.final();
const f2 = hasher.final();
if (f1 != f2) return error.IterativeHashWasNotIdempotent;
if (f1 != r) return error.IterativeHashDidNotMatchDirect;
len += i;
}
}