From aabdebbbbeb158de76d54c78b17c7f5ba78ca1ba Mon Sep 17 00:00:00 2001 From: Orange Date: Sun, 4 Jan 2026 22:14:54 +0300 Subject: [PATCH] improved stuff --- .../omath/containers/encrypted_variable.hpp | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/include/omath/containers/encrypted_variable.hpp b/include/omath/containers/encrypted_variable.hpp index 08cca91..2d9809a 100644 --- a/include/omath/containers/encrypted_variable.hpp +++ b/include/omath/containers/encrypted_variable.hpp @@ -13,11 +13,8 @@ #define OMATH_FORCEINLINE __attribute__((always_inline)) inline #endif -namespace omath +namespace omath::detail { - template - class Anchor; - consteval std::uint64_t fnv1a_64(const char* s) { std::uint64_t h = 14695981039346656037ull; @@ -84,17 +81,6 @@ namespace omath { return static_cast(rand_u64(seed, i)); // narrowing is fine/deterministic } - - constexpr std::array create_key() - { - std::array key{}; - - for (auto& byte : key) - { - byte = static_cast(rand_u64<__COUNTER__>()); - } - return key; - } template consteval std::array make_array_impl(std::index_sequence) { @@ -106,6 +92,12 @@ namespace omath { return make_array_impl(std::make_index_sequence{}); } +} // namespace omath::detail + +namespace omath +{ + template + class Anchor; template key> class EncryptedVariable final { @@ -141,10 +133,12 @@ namespace omath bytes[i] ^= static_cast(key[i % key.size()] + (i * key_size)); m_is_encrypted = true; } + [[nodiscard]] OMATH_FORCEINLINE constexpr T& value() { return m_data; } + [[nodiscard]] OMATH_FORCEINLINE constexpr const T& value() const { return m_data; @@ -172,6 +166,6 @@ namespace omath }; } // namespace omath -#define CT_RAND_ARRAY_INT(N) \ - (::omath::make_array<(N), (::omath::base_seed() ^ static_cast(__COUNTER__))>()) -#define OMATH_DEF_CRYPT_VAR(TYPE, KEY_SIZE) omath::EncryptedVariable \ No newline at end of file +#define OMATH_CT_RAND_ARRAY_BYTE(N) \ + (::omath::detail::make_array<(N), (::omath::detail::base_seed() ^ static_cast(__COUNTER__))>()) +#define OMATH_DEF_CRYPT_VAR(TYPE, KEY_SIZE) omath::EncryptedVariable \ No newline at end of file