libfilezilla
util.hpp
Go to the documentation of this file.
1 #ifndef LIBFILEZILLA_UTIL_HEADER
2 #define LIBFILEZILLA_UTIL_HEADER
3 
4 #include "libfilezilla.hpp"
5 #include "time.hpp"
6 
7 #include <cstdint>
8 
13 namespace fz {
14 
23 void FZ_PUBLIC_SYMBOL sleep(duration const& d);
24 
29 void FZ_PUBLIC_SYMBOL yield();
30 
33 int64_t FZ_PUBLIC_SYMBOL random_number(int64_t min, int64_t max);
34 
37 std::vector<uint8_t> FZ_PUBLIC_SYMBOL random_bytes(size_t size);
38 
45 uint64_t FZ_PUBLIC_SYMBOL bitscan(uint64_t v);
46 
53 uint64_t FZ_PUBLIC_SYMBOL bitscan_reverse(uint64_t v);
54 
60 bool FZ_PUBLIC_SYMBOL equal_consttime(std::basic_string_view<uint8_t> const& lhs, std::basic_string_view<uint8_t> const& rhs);
61 
62 template <typename First, typename Second,
63  std::enable_if_t<sizeof(typename First::value_type) == sizeof(uint8_t) &&
64  sizeof(typename Second::value_type) == sizeof(uint8_t)>* = nullptr>
65 inline bool equal_consttime(First const& lhs, Second const& rhs)
66 {
67  return equal_consttime(std::basic_string_view<uint8_t>(reinterpret_cast<uint8_t const*>(lhs.data()), rhs.size()),
68  std::basic_string_view<uint8_t>(reinterpret_cast<uint8_t const*>(lhs.data()), rhs.size()));
69 }
70 
71 }
72 
73 #endif
void sleep(duration const &d)
Sleep current thread for the specified duration.
uint64_t bitscan_reverse(uint64_t v)
Returns index of the most-significant set bit.
std::vector< uint8_t > random_bytes(size_t size)
Get random uniformly distributed bytes.
Assorted classes dealing with time.
int64_t random_number(int64_t min, int64_t max)
Get a secure random integer uniformly distributed in the closed interval [min, max].
The namespace used by libfilezilla.
Definition: apply.hpp:17
uint64_t bitscan(uint64_t v)
Returns index of the least-significant set bit.
Sets some global macros and further includes string.hpp.
void yield()
Relinquish control for a brief amount of time.
bool equal_consttime(std::basic_string_view< uint8_t > const &lhs, std::basic_string_view< uint8_t > const &rhs)
Secure equality test in constant time.