updated build system
This commit is contained in:
@ -62,14 +62,6 @@ template <typename result_t, typename data_t>
|
|||||||
[[nodiscard]] inline constexpr auto
|
[[nodiscard]] inline constexpr auto
|
||||||
divide_with_ceiling(result_t numerator, data_t denominator) -> result_t;
|
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>
|
template <typename data_t>
|
||||||
[[nodiscard]] inline auto generate_random_between(data_t begin,
|
[[nodiscard]] inline auto generate_random_between(data_t begin,
|
||||||
data_t end) -> data_t;
|
data_t end) -> data_t;
|
||||||
@ -78,6 +70,14 @@ template <typename data_t>
|
|||||||
|
|
||||||
[[nodiscard]] auto generate_random_wstring(std::size_t length) -> std::wstring;
|
[[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
|
[[nodiscard]] auto
|
||||||
get_environment_variable(std::string_view variable) -> std::string;
|
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);
|
: (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>
|
template <typename data_t>
|
||||||
inline auto generate_random_between(data_t begin, data_t end) -> 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>>,
|
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);
|
std::uniform_int_distribution<data_t> dis(begin, end);
|
||||||
return dis(gen);
|
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
|
} // namespace repertory::utils
|
||||||
|
|
||||||
#endif // REPERTORY_INCLUDE_UTILS_COMMON_HPP_
|
#endif // REPERTORY_INCLUDE_UTILS_COMMON_HPP_
|
||||||
|
@ -124,40 +124,40 @@ TEST(utils_common, create_uuid_string) {
|
|||||||
#endif // defined(PROJECT_ENABLE_STDUUID)
|
#endif // defined(PROJECT_ENABLE_STDUUID)
|
||||||
|
|
||||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
#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 r1 = utils::generate_secure_random<std::size_t>();
|
||||||
auto r2 = utils::generate_random<std::size_t>();
|
auto r2 = utils::generate_secure_random<std::size_t>();
|
||||||
EXPECT_NE(r1, r2);
|
EXPECT_NE(r1, r2);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
auto r1 = 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_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(6U, r1.size());
|
||||||
EXPECT_EQ(r1.size(), r2.size());
|
EXPECT_EQ(r1.size(), r2.size());
|
||||||
EXPECT_NE(r1, r2);
|
EXPECT_NE(r1, r2);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
auto r1 = 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_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(4U, r1.size());
|
||||||
EXPECT_EQ(r1.size(), r2.size());
|
EXPECT_EQ(r1.size(), r2.size());
|
||||||
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
auto r1 = utils::generate_random<std::string>(6U);
|
auto r1 = utils::generate_secure_random<std::string>(6U);
|
||||||
auto r2 = utils::generate_random<std::string>(6U);
|
auto r2 = utils::generate_secure_random<std::string>(6U);
|
||||||
EXPECT_EQ(6U, r1.size());
|
EXPECT_EQ(6U, r1.size());
|
||||||
EXPECT_EQ(r1.size(), r2.size());
|
EXPECT_EQ(r1.size(), r2.size());
|
||||||
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
auto r1 = utils::generate_random<std::wstring>(6U);
|
auto r1 = utils::generate_secure_random<std::wstring>(6U);
|
||||||
auto r2 = utils::generate_random<std::wstring>(6U);
|
auto r2 = utils::generate_secure_random<std::wstring>(6U);
|
||||||
EXPECT_EQ(6U, r1.size());
|
EXPECT_EQ(6U, r1.size());
|
||||||
EXPECT_EQ(r1.size(), r2.size());
|
EXPECT_EQ(r1.size(), r2.size());
|
||||||
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
EXPECT_NE(0, std::memcmp(r1.data(), r2.data(), r1.size()));
|
||||||
|
Reference in New Issue
Block a user