tailscale/util/deephash
Joe Tsai 60657ac83f
util/deephash: tighten up SelfHasher API (#11012)
Providing a hash.Block512 is an implementation detail of how deephash
works today, but providing an opaque type with mostly equivalent API
(i.e., HashUint8, HashBytes, etc. methods) is still sensible.
Thus, define a public Hasher type that exposes exactly the API
that an implementation of SelfHasher would want to call.
This gives us freedom to change the hashing algorithm of deephash
at some point in the future.

Also, this type is likely going to be called by types that are
going to memoize their own hash results, we additionally add
a HashSum method to simplify this use case.

Add documentation to SelfHasher on how a type might implement it.

Updates: corp#16409

Signed-off-by: Joe Tsai <joetsai@digital-static.net>
2024-02-01 17:07:41 -08:00
..
testtype all: update copyright and license headers 2023-01-27 15:36:29 -08:00
debug.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
deephash_test.go util/deephash: tighten up SelfHasher API (#11012) 2024-02-01 17:07:41 -08:00
deephash.go util/deephash: tighten up SelfHasher API (#11012) 2024-02-01 17:07:41 -08:00
pointer_norace.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
pointer_race.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
pointer.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
types_test.go util/deephash: tighten up SelfHasher API (#11012) 2024-02-01 17:07:41 -08:00
types.go util/deephash: tighten up SelfHasher API (#11012) 2024-02-01 17:07:41 -08:00