10#define BOTAN_PBKDF2_H_
12#include <botan/pbkdf.h>
13#include <botan/pwdhash.h>
23 const
std::
string& passphrase,
24 const uint8_t salt[],
size_t salt_len,
26 std::chrono::milliseconds msec);
32 uint8_t out[],
size_t out_len,
33 const uint8_t salt[],
size_t salt_len,
49 size_t iterations()
const override {
return m_iterations; }
51 std::string to_string()
const override;
53 void derive_key(uint8_t out[],
size_t out_len,
54 const char* password,
size_t password_len,
55 const uint8_t salt[],
size_t salt_len)
const override;
57 std::unique_ptr<MessageAuthenticationCode> m_prf;
69 std::string
name()
const override;
71 std::unique_ptr<PasswordHash>
tune(
size_t output_len,
72 std::chrono::milliseconds msec,
73 size_t max_memory)
const override;
82 std::unique_ptr<PasswordHash>
from_iterations(
size_t iter)
const override;
85 size_t iter,
size_t,
size_t)
const override;
87 std::unique_ptr<MessageAuthenticationCode> m_prf;
96 std::string
name()
const override;
98 PBKDF* clone()
const override;
100 size_t pbkdf(uint8_t output_buf[],
size_t output_len,
101 const std::string& passphrase,
102 const uint8_t salt[],
size_t salt_len,
104 std::chrono::milliseconds msec)
const override;
112 std::unique_ptr<MessageAuthenticationCode> m_mac;
PBKDF2_Family(MessageAuthenticationCode *prf)
PBKDF2(const MessageAuthenticationCode &prf, size_t iter)
size_t iterations() const override
PKCS5_PBKDF2(MessageAuthenticationCode *mac_fn)
virtual std::string name() const =0
virtual std::unique_ptr< PasswordHash > tune(size_t output_length, std::chrono::milliseconds msec, size_t max_memory_usage_mb=0) const =0
virtual std::unique_ptr< PasswordHash > from_iterations(size_t iterations) const =0
virtual std::unique_ptr< PasswordHash > default_params() const =0
virtual std::unique_ptr< PasswordHash > from_params(size_t i1, size_t i2=0, size_t i3=0) const =0
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
#define BOTAN_FUTURE_INTERNAL_HEADER(hdr)
size_t pbkdf2(MessageAuthenticationCode &prf, uint8_t out[], size_t out_len, const std::string &password, const uint8_t salt[], size_t salt_len, size_t iterations, std::chrono::milliseconds msec)