11#include <botan/pwdhash.h>
23 Scrypt(
size_t N,
size_t r,
size_t p);
31 void derive_key(uint8_t out[],
size_t out_len,
32 const char* password,
size_t password_len,
33 const uint8_t salt[],
size_t salt_len)
const override;
37 size_t N()
const {
return m_N; }
38 size_t r()
const {
return m_r; }
39 size_t p()
const {
return m_p; }
47 size_t total_memory_usage()
const override;
56 std::string
name()
const override;
58 std::unique_ptr<PasswordHash> tune(
size_t output_length,
59 std::chrono::milliseconds msec,
60 size_t max_memory)
const override;
62 std::unique_ptr<PasswordHash> default_params()
const override;
64 std::unique_ptr<PasswordHash> from_iterations(
size_t iter)
const override;
66 std::unique_ptr<PasswordHash> from_params(
67 size_t N,
size_t r,
size_t p)
const override;
88 const
char* password,
size_t password_len,
89 const uint8_t salt[],
size_t salt_len,
90 size_t N,
size_t r,
size_t p);
109inline
void scrypt(uint8_t output[],
size_t output_len,
110 const
std::
string& password,
111 const uint8_t salt[],
size_t salt_len,
112 size_t N,
size_t r,
size_t p)
114 return scrypt(output, output_len,
115 password.c_str(), password.size(),
122 return 128 * r * (N + p);
Scrypt & operator=(const Scrypt &)=default
size_t memory_param() const override
Scrypt(const Scrypt &other)=default
size_t iterations() const override
size_t parallelism() const override
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
size_t scrypt_memory_usage(size_t N, size_t r, size_t p)
void scrypt(uint8_t output[], size_t output_len, const char *password, size_t password_len, const uint8_t salt[], size_t salt_len, size_t N, size_t r, size_t p)
std::string to_string(ErrorType type)
Convert an ErrorType to string.