updated build system

This commit is contained in:
2024-08-31 13:35:03 -05:00
parent ce5ceeb53b
commit 556c798a70
2 changed files with 39 additions and 39 deletions

View File

@ -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_

View File

@ -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()));