class NodeDigest
Defined at line 32 of file ../../src/lib/digest/node-digest.h
Digest wrapper functions for hashing data organized into "nodes" of a fixed size. The specific
algorithm is backwards compatible with BlobFS:
digest = Hash((id | data_off) + (data_len - data_off) + node_data + padding)
where:
* id is usage-specific (e.g. the tree level when used in a Merkle tree).
* data_off is the offset for a specific node.
* data_len is the total length of the data.
* node_data is the actual bytes from the node.
* padding is |kNodeSize - length| zeros.
Public Methods
zx_status_t SetNodeSize (size_t node_size)
Sets the node size if |node_size| satisfies |IsValidNodeSize|.
Defined at line 18 of file ../../src/lib/digest/node-digest.cc
zx_status_t Reset (size_t data_off, size_t data_len)
Wrapper for Digest::Init. This primes the working |digest_| initializing it
and hashing two values: the "locality", which is the bitwise-XOR of the |id_| and |data_off|,
and the "length", which is the |node_size_| or |data_len| - |data-off|, whichever is less.
Defined at line 26 of file ../../src/lib/digest/node-digest.cc
void NodeDigest ()
Defined at line 34 of file ../../src/lib/digest/node-digest.h
void ~NodeDigest ()
Defined at line 35 of file ../../src/lib/digest/node-digest.h
void NodeDigest (const NodeDigest & )
Defined at line 36 of file ../../src/lib/digest/node-digest.h
void NodeDigest (NodeDigest && )
Defined at line 36 of file ../../src/lib/digest/node-digest.h
NodeDigest & operator= (const NodeDigest & )
Defined at line 36 of file ../../src/lib/digest/node-digest.h
NodeDigest & operator= (NodeDigest && )
Defined at line 36 of file ../../src/lib/digest/node-digest.h
const Digest & get ()
Defined at line 38 of file ../../src/lib/digest/node-digest.h
size_t len ()
Defined at line 39 of file ../../src/lib/digest/node-digest.h
uint64_t id ()
Defined at line 40 of file ../../src/lib/digest/node-digest.h
size_t node_size ()
Defined at line 41 of file ../../src/lib/digest/node-digest.h
void set_id (uint64_t id)
Defined at line 42 of file ../../src/lib/digest/node-digest.h
size_t Append (const void * buf, size_t buf_len)
Wrapper for Digest::Update. This will hash data up to |buf_len| bytes from |buf|, and return
the number of bytes hashed.
Defined at line 44 of file ../../src/lib/digest/node-digest.cc
bool IsAligned (size_t data_off)
Returns true if |data_off| is aligned to a node boundary.
Defined at line 48 of file ../../src/lib/digest/node-digest.h
size_t ToNode (size_t data_off)
Returns the node number for a given |data_off|.
Defined at line 51 of file ../../src/lib/digest/node-digest.h
size_t PrevAligned (size_t data_off)
Returns the greatest node boundary that is not greater than |data_off|. Returns |data_off| if
it is node-aligned.
Defined at line 55 of file ../../src/lib/digest/node-digest.h
size_t NextAligned (size_t data_off)
Returns the smallest node boundary that is not less than |data_off|. Returns |data_off| if it
is node-aligned.
Defined at line 59 of file ../../src/lib/digest/node-digest.h
void PadWithZeros ()
Appends zeros to fill up the rest of the node.
Defined at line 61 of file ../../src/lib/digest/node-digest.cc
size_t MaxAligned ()
Returns the largest node-aligned offset.
Defined at line 62 of file ../../src/lib/digest/node-digest.h
bool IsValidNodeSize (size_t node_size)
Returns |true| if |node_size| is a power of 2 between |kMinNodeSize| and |kMaxNodeSize|.
Defined at line 77 of file ../../src/lib/digest/node-digest.h