8 #include <botan/par_hash.h>
9 #include <botan/parsing.h>
13 void Parallel::add_data(
const uint8_t input[],
size_t length)
15 for(
auto&&
hash : m_hashes)
16 hash->update(input, length);
19 void Parallel::final_result(uint8_t out[])
23 for(
auto&&
hash : m_hashes)
25 hash->final(out + offset);
26 offset +=
hash->output_length();
34 for(
auto&&
hash : m_hashes)
35 sum +=
hash->output_length();
41 std::vector<std::string> names;
43 for(
auto&&
hash : m_hashes)
44 names.push_back(
hash->name());
51 std::vector<std::unique_ptr<HashFunction>> hash_copies;
53 for(
auto&&
hash : m_hashes)
54 hash_copies.push_back(std::unique_ptr<HashFunction>(
hash->clone()));
61 for(
auto&&
hash : m_hashes)
65 Parallel::Parallel(std::vector<std::unique_ptr<HashFunction>>& h)
67 for(
size_t i = 0; i != h.size(); ++i)
69 m_hashes.push_back(std::unique_ptr<HashFunction>(h[i].release()));
std::string string_join(const std::vector< std::string > &strs, char delim)
HashFunction * clone() const override
size_t output_length() const override
std::string name() const override