8 #ifndef BOTAN_HMAC_DRBG_H__
9 #define BOTAN_HMAC_DRBG_H__
11 #include <botan/stateful_rng.h>
12 #include <botan/mac.h>
16 class Entropy_Sources;
34 HMAC_DRBG(std::unique_ptr<MessageAuthenticationCode> prf);
59 HMAC_DRBG(std::unique_ptr<MessageAuthenticationCode> prf,
61 size_t reseed_interval = BOTAN_RNG_DEFAULT_RESEED_INTERVAL,
62 size_t max_number_of_bytes_per_request = 64 * 1024);
86 HMAC_DRBG(std::unique_ptr<MessageAuthenticationCode> prf,
88 size_t reseed_interval = BOTAN_RNG_DEFAULT_RESEED_INTERVAL,
89 size_t max_number_of_bytes_per_request = 64 * 1024);
116 HMAC_DRBG(std::unique_ptr<MessageAuthenticationCode> prf,
119 size_t reseed_interval = BOTAN_RNG_DEFAULT_RESEED_INTERVAL,
120 size_t max_number_of_bytes_per_request = 64 * 1024);
128 m_max_number_of_bytes_per_request(64 * 1024)
133 std::string name()
const override;
135 void clear()
override;
137 void randomize(uint8_t output[],
size_t output_len)
override;
139 void randomize_with_input(uint8_t output[],
size_t output_len,
140 const uint8_t input[],
size_t input_len)
override;
142 void add_entropy(
const uint8_t input[],
size_t input_len)
override;
144 size_t security_level()
const override;
147 void update(
const uint8_t input[],
size_t input_len);
149 std::unique_ptr<MessageAuthenticationCode>
m_mac;
151 const size_t m_max_number_of_bytes_per_request;
std::unique_ptr< MessageAuthenticationCode > m_mac
HMAC_DRBG(const std::string &hmac_hash)
std::vector< T, secure_allocator< T >> secure_vector