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());
std::string arg(size_t i) const
HashFunction * find_hash(const SCAN_Name &request, Algorithm_Factory &) const
virtual HashFunction * clone() const =0
std::string algo_name() const
const HashFunction * prototype_hash_function(const std::string &algo_spec, const std::string &provider="")
size_t arg_as_integer(size_t i, size_t def_value) const