updated build system
This commit is contained in:
@ -62,14 +62,6 @@ template <typename result_t, typename data_t>
|
||||
[[nodiscard]] inline constexpr auto
|
||||
divide_with_ceiling(result_t numerator, data_t denominator) -> result_t;
|
||||
|
||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
template <typename data_t>
|
||||
[[nodiscard]] inline auto generate_random() -> data_t;
|
||||
|
||||
template <typename data_t>
|
||||
[[nodiscard]] inline auto generate_random(std::size_t size) -> data_t;
|
||||
#endif // defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
|
||||
template <typename data_t>
|
||||
[[nodiscard]] inline auto generate_random_between(data_t begin,
|
||||
data_t end) -> data_t;
|
||||
@ -78,6 +70,14 @@ template <typename data_t>
|
||||
|
||||
[[nodiscard]] auto generate_random_wstring(std::size_t length) -> std::wstring;
|
||||
|
||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
template <typename data_t>
|
||||
[[nodiscard]] inline auto generate_secure_random() -> data_t;
|
||||
|
||||
template <typename data_t>
|
||||
[[nodiscard]] inline auto generate_secure_random(std::size_t size) -> data_t;
|
||||
#endif // defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
|
||||
[[nodiscard]] auto
|
||||
get_environment_variable(std::string_view variable) -> std::string;
|
||||
|
||||
@ -106,26 +106,6 @@ inline constexpr auto divide_with_ceiling(result_t numerator,
|
||||
: (numerator / denominator) + (numerator % denominator != 0);
|
||||
}
|
||||
|
||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
template <typename data_t> inline auto generate_random() -> data_t {
|
||||
static_assert(!is_collection<std::decay_t<data_t>>::value,
|
||||
"data_t is a vector or collection");
|
||||
data_t ret{};
|
||||
randombytes_buf(&ret, sizeof(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename data_t>
|
||||
inline auto generate_random(std::size_t size) -> data_t {
|
||||
static_assert(is_collection<std::decay_t<data_t>>::value,
|
||||
"data_t is not a vector or collection");
|
||||
data_t ret;
|
||||
ret.resize(size);
|
||||
randombytes_buf(ret.data(), ret.size() * sizeof(typename data_t::value_type));
|
||||
return ret;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
|
||||
template <typename data_t>
|
||||
inline auto generate_random_between(data_t begin, data_t end) -> data_t {
|
||||
static_assert(std::is_integral_v<std::remove_cv_t<data_t>>,
|
||||
@ -138,6 +118,26 @@ inline auto generate_random_between(data_t begin, data_t end) -> data_t {
|
||||
std::uniform_int_distribution<data_t> dis(begin, end);
|
||||
return dis(gen);
|
||||
}
|
||||
|
||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
template <typename data_t> inline auto generate_secure_random() -> data_t {
|
||||
static_assert(!is_collection<std::decay_t<data_t>>::value,
|
||||
"data_t is a vector or collection");
|
||||
data_t ret{};
|
||||
randombytes_buf(&ret, sizeof(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename data_t>
|
||||
inline auto generate_secure_random(std::size_t size) -> data_t {
|
||||
static_assert(is_collection<std::decay_t<data_t>>::value,
|
||||
"data_t is not a vector or collection");
|
||||
data_t ret;
|
||||
ret.resize(size);
|
||||
randombytes_buf(ret.data(), ret.size() * sizeof(typename data_t::value_type));
|
||||
return ret;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
} // namespace repertory::utils
|
||||
|
||||
#endif // REPERTORY_INCLUDE_UTILS_COMMON_HPP_
|
||||
|
@ -124,40 +124,40 @@ TEST(utils_common, create_uuid_string) {
|
||||
#endif // defined(PROJECT_ENABLE_STDUUID)
|
||||
|
||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
TEST(utils_common, generate_random) {
|
||||
TEST(utils_common, generate_secure_random) {
|
||||
{
|
||||
auto r1 = utils::generate_random<std::size_t>();
|
||||
auto r2 = utils::generate_random<std::size_t>();
|
||||
auto r1 = utils::generate_secure_random<std::size_t>();
|
||||
auto r2 = utils::generate_secure_random<std::size_t>();
|
||||
EXPECT_NE(r1, r2);
|
||||
}
|
||||
|
||||
{
|
||||
auto r1 = utils::generate_random<std::vector<std::uint8_t>>(6U);
|
||||
auto r2 = utils::generate_random<std::vector<std::uint8_t>>(6U);
|
||||
auto r1 = utils::generate_secure_random<std::vector<std::uint8_t>>(6U);
|
||||
auto r2 = utils::generate_secure_random<std::vector<std::uint8_t>>(6U);
|
||||
EXPECT_EQ(6U, r1.size());
|
||||
EXPECT_EQ(r1.size(), r2.size());
|
||||
EXPECT_NE(r1, r2);
|
||||
}
|
||||
|
||||
{
|
||||
auto r1 = utils::generate_random<std::array<std::uint8_t, 4U>>();
|
||||
auto r2 = utils::generate_random<std::array<std::uint8_t, 4U>>();
|
||||
auto r1 = utils::generate_secure_random<std::array<std::uint8_t, 4U>>();
|
||||
auto r2 = utils::generate_secure_random<std::array<std::uint8_t, 4U>>();
|
||||
EXPECT_EQ(4U, r1.size());
|
||||
EXPECT_EQ(r1.size(), r2.size());
|
||||
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
||||
}
|
||||
|
||||
{
|
||||
auto r1 = utils::generate_random<std::string>(6U);
|
||||
auto r2 = utils::generate_random<std::string>(6U);
|
||||
auto r1 = utils::generate_secure_random<std::string>(6U);
|
||||
auto r2 = utils::generate_secure_random<std::string>(6U);
|
||||
EXPECT_EQ(6U, r1.size());
|
||||
EXPECT_EQ(r1.size(), r2.size());
|
||||
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
||||
}
|
||||
|
||||
{
|
||||
auto r1 = utils::generate_random<std::wstring>(6U);
|
||||
auto r2 = utils::generate_random<std::wstring>(6U);
|
||||
auto r1 = utils::generate_secure_random<std::wstring>(6U);
|
||||
auto r2 = utils::generate_secure_random<std::wstring>(6U);
|
||||
EXPECT_EQ(6U, r1.size());
|
||||
EXPECT_EQ(r1.size(), r2.size());
|
||||
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
||||
|
Reference in New Issue
Block a user