ark::serialization::Hasher

Defined in header “ark/serialization/hasher.hh”.


This class wraps a hash algorithm and allows you to create a running hash from fields contained within a serialized structure.

Methods

  • void add(const Type & type)
    Adds the given object to the hash. If it’s an serializable structure, it will hash it recursively.

  • void add(const std::string & source)
    Adds the given string to the underlying hash.

  • void add(const std::vector< Type > & type)
    Adds the given vector to the underlying hash. Items are added recursively.

  • void add(const std::array< Type, ArraySize > & type)
    Adds the given array to the underlying hash. Items are added recursively.

  • void add(const std::map< Key, Value > & type)
    Adds the given map to the underlying hash. Keys/values are added recursively, in the order of [key, value, key, value].

  • void add(const std::chrono::nanoseconds & source)
    Adds the given duration to the underlying hash.

  • void add(const std::chrono::steady_clock::time_point & source)
    Adds the given time point to the underlying hash.

  • void add(const std::chrono::system_clock::time_point & source)
    Adds the given time point to the underlying hash.

  • void add(const std::optional< Type > & type)
    Adds the given optional field to the underlying hash. If set, the underlying type will be hashed. Otherwise, nothing will be hashed.

  • void add(const IndexedVariant< VariantSubtypes… > & value)
    Adds the current value of the variant to the underlying hash.

  • void add(const std::variant< VariantSubtypes… > & value, const std::array< uint8_t, sizeof…(VariantSubtypes)> & index)
    Adds the current value of the variant to the underlying hash.

  • void add(const std::optional< std::variant< VariantSubtypes… » & value, const std::array< uint8_t, sizeof…(VariantSubtypes)> & index)
    Adds the current value of the variant to the underlying hash.

  • void add_primitive(const Type & type)
    Adds the given primitive to the underlying hash.

  • void add_data(const void * data, size_t length)
    Pass-through to the underlying algorithm add_data routine. Adds ’length’ bytes to the hash.

  • uint64_t finalize()
    Finalizes the hash, returning the final hash. Use this once you have added all the data yuou intend to.