10#include <botan/pwdhash.h>
16class RandomNumberGenerator;
24 Argon2(uint8_t family,
size_t M,
size_t t,
size_t p);
32 void derive_key(uint8_t out[],
size_t out_len,
33 const char* password,
size_t password_len,
34 const uint8_t salt[],
size_t salt_len)
const override;
38 size_t M()
const {
return m_M; }
39 size_t t()
const {
return m_t; }
40 size_t p()
const {
return m_p; }
60 std::string
name()
const override;
62 std::unique_ptr<PasswordHash> tune(
size_t output_length,
63 std::chrono::milliseconds msec,
64 size_t max_memory)
const override;
66 std::unique_ptr<PasswordHash> default_params()
const override;
68 std::unique_ptr<PasswordHash> from_iterations(
size_t iter)
const override;
70 std::unique_ptr<PasswordHash> from_params(
71 size_t M,
size_t t,
size_t p)
const override;
73 const uint8_t m_family;
95 const
char* password,
size_t password_len,
96 const uint8_t salt[],
size_t salt_len,
97 const uint8_t key[],
size_t key_len,
98 const uint8_t ad[],
size_t ad_len,
99 uint8_t y,
size_t p,
size_t M,
size_t t);
104 size_t p,
size_t M,
size_t t,
105 uint8_t y = 2,
size_t salt_len = 16,
size_t output_len = 32);
size_t iterations() const override
size_t total_memory_usage() const override
Argon2 & operator=(const Argon2 &)=default
size_t parallelism() const override
Argon2(const Argon2 &other)=default
size_t memory_param() const override
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
void argon2(uint8_t output[], size_t output_len, const char *password, size_t password_len, const uint8_t salt[], size_t salt_len, const uint8_t key[], size_t key_len, const uint8_t ad[], size_t ad_len, uint8_t mode, size_t threads, size_t M, size_t t)
bool argon2_check_pwhash(const char *password, size_t password_len, const std::string &hash)
std::string to_string(ErrorType type)
Convert an ErrorType to string.
std::string argon2_generate_pwhash(const char *password, size_t password_len, RandomNumberGenerator &rng, size_t p, size_t M, size_t t, uint8_t y=2, size_t salt_len=16, size_t output_len=32)