8#ifndef BOTAN_PKCS12_KDF_H_
9#define BOTAN_PKCS12_KDF_H_
11#include <botan/hash.h>
12#include <botan/pwdhash.h>
13#include <botan/types.h>
41 size_t iterations()
const override {
return m_iterations; }
48 size_t salt_len)
const override;
51 std::unique_ptr<HashFunction> m_hash;
66 std::span<const uint8_t> pwd_bytes,
67 std::span<const uint8_t> salt,
76 std::string
name()
const override;
78 std::unique_ptr<PasswordHash>
tune_params(
size_t output_length,
79 uint64_t desired_runtime_msec,
80 std::optional<size_t> max_memory_usage_mb = {},
81 uint64_t tuning_msec = 10)
const override;
85 std::unique_ptr<PasswordHash>
from_iterations(
size_t iterations)
const override;
87 std::unique_ptr<PasswordHash>
from_params(
size_t i1,
size_t i2 = 0,
size_t i3 = 0)
const override;
90 std::unique_ptr<HashFunction> m_hash;
std::string name() const override
std::unique_ptr< PasswordHash > from_params(size_t i1, size_t i2=0, size_t i3=0) const override
std::unique_ptr< PasswordHash > tune_params(size_t output_length, uint64_t desired_runtime_msec, std::optional< size_t > max_memory_usage_mb={}, uint64_t tuning_msec=10) const override
std::unique_ptr< PasswordHash > default_params() const override
std::unique_ptr< PasswordHash > from_iterations(size_t iterations) const override
PKCS12_KDF_Family(std::unique_ptr< HashFunction > hash, size_t id)
void derive_key(uint8_t out[], size_t out_len, const char *password, size_t password_len, const uint8_t salt[], size_t salt_len) const override
std::string to_string() const override
PKCS12_KDF(std::unique_ptr< HashFunction > hash, uint8_t id, size_t iterations)
size_t iterations() const override
void hash(std::span< uint8_t > out, std::string_view password, std::span< const uint8_t > salt) const
void pkcs12_kdf(std::span< uint8_t > out, std::span< const uint8_t > pwd_bytes, std::span< const uint8_t > salt, size_t iterations, uint8_t id, HashFunction &hash)