1 #ifndef LIBFILEZILLA_HASH_HEADER
2 #define LIBFILEZILLA_HASH_HEADER
28 enum class hmac_algorithm
53 size_t digest_size()
const;
57 void update(std::string_view
const& data);
58 void update(std::basic_string_view<uint8_t>
const& data);
59 void update(std::vector<uint8_t>
const& data);
60 void update(uint8_t
const* data,
size_t size);
61 void update(
buffer const& data);
62 void update(uint8_t in) {
67 void update_uint32_be(uint32_t v);
70 void update_with_length(std::string_view
const& data);
73 std::vector<uint8_t> digest();
74 void digest(uint8_t* out,
size_t s);
76 operator std::vector<uint8_t>() {
80 bool is_digest(std::string_view
const& ref);
81 bool is_digest(uint8_t
const* ref,
size_t s);
85 update(std::forward<T>(in));
90 std::vector<std::uint8_t> export_state();
91 bool import_state(std::vector<std::uint8_t>
const& state);
102 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
md5(std::string_view
const& data);
103 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
md5(std::vector<uint8_t>
const& data);
106 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha1(std::string_view
const& data);
107 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha1(std::vector<uint8_t>
const& data);
110 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha256(std::string_view
const& data);
111 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha256(std::vector<uint8_t>
const& data);
114 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha384(std::string_view
const& data);
115 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha384(std::vector<uint8_t>
const& data);
118 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha512(std::string_view
const& data);
119 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sha512(std::vector<uint8_t>
const& data);
125 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha1(std::string_view
const& key, std::string_view
const& data);
126 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha1(std::vector<uint8_t>
const& key, std::vector<uint8_t>
const& data);
127 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha1(std::vector<uint8_t>
const& key, std::string_view
const& data);
128 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha1(std::string_view
const& key, std::vector<uint8_t>
const& data);
131 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha256(std::string_view
const& key, std::string_view
const& data);
132 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha256(std::vector<uint8_t>
const& key, std::vector<uint8_t>
const& data);
133 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha256(std::vector<uint8_t>
const& key, std::string_view
const& data);
134 std::vector<uint8_t> FZ_PUBLIC_SYMBOL
hmac_sha256(std::string_view
const& key, std::vector<uint8_t>
const& data);
136 std::vector<uint8_t> FZ_PUBLIC_SYMBOL pbkdf2_hmac_sha256(std::basic_string_view<uint8_t>
const& password, std::basic_string_view<uint8_t>
const& salt,
size_t length,
unsigned int iterations);
138 template <
typename PasswordContainer,
typename SaltContainer,
139 std::enable_if_t<
sizeof(
typename PasswordContainer::value_type) ==
sizeof(uint8_t) &&
140 sizeof(
typename SaltContainer::value_type) ==
sizeof(uint8_t)>* =
nullptr>
141 std::vector<uint8_t> pbkdf2_hmac_sha256(PasswordContainer
const& password, SaltContainer
const& salt,
size_t length,
unsigned int iterations)
143 return pbkdf2_hmac_sha256(std::basic_string_view<uint8_t>(reinterpret_cast<uint8_t const*>(password.data()), password.size()),
144 std::basic_string_view<uint8_t>(reinterpret_cast<uint8_t const*>(salt.data()), salt.size()),
std::vector< uint8_t > md5(std::string_view const &data)
Standard MD5.
std::vector< uint8_t > hmac_sha1(std::string_view const &key, std::string_view const &data)
Standard HMAC using SHA1.
std::vector< uint8_t > sha512(std::string_view const &data)
Standard SHA512.
std::vector< uint8_t > hmac_sha256(std::string_view const &key, std::string_view const &data)
Standard HMAC using SHA256.
hash_algorithm
List of supported hashing algorithms.
Definition: hash.hpp:16
std::vector< uint8_t > sha1(std::string_view const &data)
Standard SHA1.
Accumulator for hashing large amounts of data.
Definition: hash.hpp:41
size_t get_digest_size(hash_algorithm)
Returns digest size in bytes.
std::vector< uint8_t > sha384(std::string_view const &data)
Standard SHA384.
The namespace used by libfilezilla.
Definition: apply.hpp:17
Sets some global macros and further includes string.hpp.
The buffer class is a simple buffer where data can be appended at the end and consumed at the front...
Definition: buffer.hpp:26
std::vector< uint8_t > sha256(std::string_view const &data)
Standard SHA256.