8#include <botan/par_hash.h>
9#include <botan/parsing.h>
13void Parallel::add_data(
const uint8_t input[],
size_t length)
15 for(
auto&&
hash : m_hashes)
16 hash->update(input, length);
19void 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 std::vector<std::unique_ptr<HashFunction>> hash_clones;
63 for(
const std::unique_ptr<HashFunction>&
hash : m_hashes)
65 hash_clones.push_back(
hash->copy_state());
68 return std::unique_ptr<HashFunction>(
new Parallel(hash_clones));
73 for(
auto&&
hash : m_hashes)
77Parallel::Parallel(std::vector<std::unique_ptr<HashFunction>>& h)
79 for(
size_t i = 0; i != h.size(); ++i)
81 m_hashes.push_back(std::unique_ptr<HashFunction>(h[i].release()));
std::string name() const override
std::unique_ptr< HashFunction > copy_state() const override
HashFunction * clone() const override
size_t output_length() const override
std::string string_join(const std::vector< std::string > &strs, char delim)