9#ifndef BOTAN_OPENPGP_S2K_H_
10#define BOTAN_OPENPGP_S2K_H_
12#include <botan/pbkdf.h>
13#include <botan/pwdhash.h>
14#include <botan/hash.h>
70 std::string
name()
const override
72 return "OpenPGP-S2K(" + m_hash->name() +
")";
80 size_t pbkdf(uint8_t output_buf[],
size_t output_len,
81 const std::string& passphrase,
82 const uint8_t salt[],
size_t salt_len,
84 std::chrono::milliseconds msec)
const override;
100 std::unique_ptr<HashFunction> m_hash;
127 void derive_key(uint8_t out[],
size_t out_len,
128 const char* password,
size_t password_len,
129 const uint8_t salt[],
size_t salt_len)
const override;
132 std::unique_ptr<HashFunction> m_hash;
141 std::string
name()
const override;
143 std::unique_ptr<PasswordHash> tune(
size_t output_len,
144 std::chrono::milliseconds msec,
145 size_t max_mem)
const override;
152 std::unique_ptr<PasswordHash> default_params()
const override;
154 std::unique_ptr<PasswordHash> from_iterations(
size_t iter)
const override;
156 std::unique_ptr<PasswordHash> from_params(
157 size_t iter,
size_t,
size_t)
const override;
159 std::unique_ptr<HashFunction> m_hash;
static size_t decode_count(uint8_t encoded_iter)
PBKDF * clone() const override
std::string name() const override
static uint8_t encode_count(size_t iterations)
OpenPGP_S2K(HashFunction *hash)
RFC4880_S2K_Family(HashFunction *hash)
size_t iterations() const override
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
uint8_t RFC4880_encode_count(size_t desired_iterations)
size_t RFC4880_decode_count(uint8_t iter)
std::string to_string(ErrorType type)
Convert an ErrorType to string.
size_t RFC4880_round_iterations(size_t iterations)