1#include <xrpl/basics/hardened_hash.h>
2#include <xrpl/beast/unit_test.h>
24 template <
class Hasher>
44 template <
class Hasher>
76template <std::
size_t Bits,
class UInt = std::u
int64_t>
82 "UInt must be an unsigned integral type");
84 static_assert(Bits % (8 *
sizeof(UInt)) == 0,
"Bits must be a multiple of 8*sizeof(UInt)");
86 static_assert(Bits >= (8 *
sizeof(UInt)),
"Bits must be at least 8*sizeof(UInt)");
121 template <
class Hasher>
140#ifndef __INTELLISENSE__
141static_assert(
sha256_t::bits == 256,
"sha256_t must have 256 bits");
162 template <
template <
class T>
class U>
168 check<U<signed char>>();
169 check<U<unsigned char>>();
175 check<U<unsigned short>>();
177 check<U<unsigned int>>();
179 check<U<long long>>();
180 check<U<unsigned long>>();
181 check<U<unsigned long long>>();
184 check<U<long double>>();
187 template <
template <
class T>
class C>
192 C<detail::test_user_type_member<std::string>> c;
198 C<detail::test_user_type_free<std::string>> c;
208 check_user_type<detail::test_user_type_member>();
209 check_user_type<detail::test_user_type_free>();
216 check_container<detail::test_hardened_unordered_set>();
217 check_container<detail::test_hardened_unordered_map>();
218 check_container<detail::test_hardened_unordered_multiset>();
219 check_container<detail::test_hardened_unordered_multimap>();
void pass()
Record a successful test condition.
testcase_t testcase
Memberspace for declaring test cases.
friend void hash_append(Hasher &h, test_user_type_free const &a) noexcept
test_user_type_free(T const &t_=T())
friend void hash_append(Hasher &h, test_user_type_member const &a) noexcept
test_user_type_member(T const &t_=T())
void run() override
Runs the suite.
Seed functor once per construction.
void const * data() const noexcept
static std::size_t const size
static std::size_t const bytes
friend void hash_append(Hasher &h, unsigned_integer const &a) noexcept
static std::size_t const bits
friend std::ostream & operator<<(std::ostream &s, unsigned_integer const &v)
std::array< UInt, size > m_vec
static unsigned_integer from_number(Int v)
std::enable_if_t< is_contiguously_hashable< T, Hasher >::value > hash_append(Hasher &h, T const &t) noexcept
Logically concatenate input data to a Hasher.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.