8#include <botan/internal/core_engine.h>
9#include <botan/scan_name.h>
10#include <botan/algo_factory.h>
13#if defined(BOTAN_HAS_ADLER32)
14 #include <botan/adler32.h>
17#if defined(BOTAN_HAS_CRC24)
18 #include <botan/crc24.h>
21#if defined(BOTAN_HAS_CRC32)
22 #include <botan/crc32.h>
25#if defined(BOTAN_HAS_BMW_512)
26 #include <botan/bmw_512.h>
29#if defined(BOTAN_HAS_GOST_34_11)
30 #include <botan/gost_3411.h>
33#if defined(BOTAN_HAS_HAS_160)
34 #include <botan/has160.h>
37#if defined(BOTAN_HAS_KECCAK)
38 #include <botan/keccak.h>
41#if defined(BOTAN_HAS_MD2)
42 #include <botan/md2.h>
45#if defined(BOTAN_HAS_MD4)
46 #include <botan/md4.h>
49#if defined(BOTAN_HAS_MD5)
50 #include <botan/md5.h>
53#if defined(BOTAN_HAS_RIPEMD_128)
54 #include <botan/rmd128.h>
57#if defined(BOTAN_HAS_RIPEMD_160)
58 #include <botan/rmd160.h>
61#if defined(BOTAN_HAS_SHA1)
62 #include <botan/sha160.h>
65#if defined(BOTAN_HAS_SHA2_32)
66 #include <botan/sha2_32.h>
69#if defined(BOTAN_HAS_SHA2_64)
70 #include <botan/sha2_64.h>
73#if defined(BOTAN_HAS_SKEIN_512)
74 #include <botan/skein_512.h>
77#if defined(BOTAN_HAS_TIGER)
78 #include <botan/tiger.h>
81#if defined(BOTAN_HAS_WHIRLPOOL)
82 #include <botan/whrlpool.h>
85#if defined(BOTAN_HAS_PARALLEL_HASH)
86 #include <botan/par_hash.h>
89#if defined(BOTAN_HAS_COMB4P)
90 #include <botan/comb4p.h>
101#if defined(BOTAN_HAS_ADLER32)
106#if defined(BOTAN_HAS_CRC24)
111#if defined(BOTAN_HAS_CRC32)
116#if defined(BOTAN_HAS_BMW_512)
121#if defined(BOTAN_HAS_GOST_34_11)
126#if defined(BOTAN_HAS_HAS_160)
131#if defined(BOTAN_HAS_KECCAK)
136#if defined(BOTAN_HAS_MD2)
141#if defined(BOTAN_HAS_MD4)
146#if defined(BOTAN_HAS_MD5)
151#if defined(BOTAN_HAS_RIPEMD_128)
156#if defined(BOTAN_HAS_RIPEMD_160)
161#if defined(BOTAN_HAS_SHA1)
166#if defined(BOTAN_HAS_SHA2_32)
173#if defined(BOTAN_HAS_SHA2_64)
180#if defined(BOTAN_HAS_TIGER)
186#if defined(BOTAN_HAS_SKEIN_512)
192#if defined(BOTAN_HAS_WHIRLPOOL)
197#if defined(BOTAN_HAS_COMB4P)
208#if defined(BOTAN_HAS_PARALLEL_HASH)
212 std::vector<const HashFunction*> hash_prototypes;
217 for(
size_t i = 0; i != request.
arg_count(); ++i)
223 hash_prototypes.push_back(hash);
226 std::vector<HashFunction*> hashes;
227 for(
size_t i = 0; i != hash_prototypes.size(); ++i)
228 hashes.push_back(hash_prototypes[i]->clone());
const HashFunction * prototype_hash_function(const std::string &algo_spec, const std::string &provider="")
Comb4P(HashFunction *h1, HashFunction *h2)
HashFunction * find_hash(const SCAN_Name &request, Algorithm_Factory &) const
virtual HashFunction * clone() const =0
Keccak_1600(size_t output_bits=512)
Parallel(const std::vector< HashFunction * > &hashes)
std::string arg(size_t i) const
std::string algo_name() const
size_t arg_as_integer(size_t i, size_t def_value) const
Skein_512(size_t output_bits=512, const std::string &personalization="")
Tiger(size_t out_size=24, size_t passes=3)