Commit Graph

329 Commits

Author SHA1 Message Date
surtur d404681889
feat: "prepare to add proper entropy source" nits
All checks were successful
continuous-integration/drone/push Build is passing
general
* make greater use of "this"

Fortuna
* declare da_pools as a proper std::array of 32 Pool objects
* declare da_pools as const
* use std::shared_ptr _p_pools to access da_pools and share access to
  it
* reflect change of pools[] -> std::array in how the array elements
  are accessed, which is a) via _p_pools pointer and b) using ".at(i)"
  function
* pass _p_pools shared_ptr to Accumulator
* refactor member function names and variable names
* add member function attribute [[optimize_for_synchronized]]
* secure conversions with static_cast-s

Accumulator
* make use of _p_pools
* add _p_pools-related member functions
* add a static constexpr variable NUM_OF_POOLS

UrandomEntropySrc
* implement event adding logic using _p_pools
* make std::vector<char> non-static in urandom_entropy_src
* implement proper urandom entropy source event "sourcing" (from
  /dev/urandom), event adding, clear bytes array at the end
* properly convert using reinterpret_cast
* protect access to the main function with std::lock_guard
* receive EventAdderImpl as a ref
* use return value from "add_entropy()" member function and create
  sanity guard checking the return code "int ret"

EventAdder
* pass event (std::vector<char>) by const&

EventAdderImpl
* make use of _p_pools shared_ptr
* implement proper pool-rotating event-adding logic

Pool
* delete all copy constructors and assignment operator, the objects
  will not be copied or assigned to
* receive parameters by const& where possible/sensible
* handle concurrency:
  * declare std:string s as mutable
  * declare a rw std::mutex intended for writing and mutable
    std::recursive_mutex for read-only operations in const member
    functions
    ref: https://herbsutter.com/2013/05/24/gotw-6a-const-correctness-part-1-3/
    ref: https://arne-mertz.de/2017/10/mutable/
  * use std::lock_guard and std::unique_lock
* refactor "add_entropy()" member function
  * get rid of intermediate "event_str" and directly use the "event"
    std::vector<char> for all operations
  * add a lock guard to prevent multiple threads (should that route be
    taken) from modifying pool resources simultaneously
  * add all_ok bool for basic sanity checking
  * add print statements (at least for now)
* rename "get_s_length()" member function to "get_s_byte_count()" and
  repurpose it to return byte count of the stored entropy std::string s
2022-01-17 08:27:24 +01:00
surtur e899c03da2
chore(pool): add const& qual, #include stuff
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 07:49:03 +01:00
surtur e78ac038db
accumulator: don't move &gen
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 07:32:57 +01:00
surtur 96d8265c22
entropy_src: add ctor,dtor, rm scheduler fun
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 07:28:32 +01:00
surtur 55659bd243
generator: pass param by const&
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 07:22:19 +01:00
surtur c615076182
chore(sfm): uint -> unsigned int
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 07:20:16 +01:00
surtur 2872c44d8e
Util: add do_sha() for {const,} std::vector<char>&
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 04:52:55 +01:00
surtur 62f31c1436
scheduler: add thread_sleep, use const& param
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 04:42:59 +01:00
surtur 146bf14d68
accumulator: use const& params,uint->unsigned int
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 04:36:15 +01:00
surtur b4d7cb3dfb
chore: rm trailing ;
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 04:03:06 +01:00
surtur 706176bcc4
cmake: add libs using target_include_directories
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-17 00:28:52 +01:00
surtur 7fca4481c8
generator: implement time_to_reseed() fun
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-15 13:35:56 +01:00
surtur c0933d355d
fortuna: improve mtx handling, introduce accu_mtx
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 08:52:51 +01:00
surtur b682b0251d
UrandomEntropySrc: add a static_cast to calm TIDY
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 08:39:29 +01:00
surtur f79395261f
sfm: smooth out yet other conversions
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 08:27:52 +01:00
surtur 5d6b9b9b28
Util: apply latest clang-format
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 08:07:26 +01:00
surtur 7c6e53f31b
SeedFileManager: fix -Wshadow, -Wconversion
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 07:58:55 +01:00
surtur 2f452de8be
accumulator: for loop -> std::any_of
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 07:25:10 +01:00
surtur 61dbc4b666
accumulator: fix -Wshadow, -Wconversion
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 07:17:59 +01:00
surtur 508eaaa67f
EventAdderImpl: fix -Wshadow, -Wconversion
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 07:10:16 +01:00
surtur bb1d895d4e
cmake: switch to alt. compiler detection mechanism
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 07:02:12 +01:00
surtur 65882cad15
cmake: only run TSan on non-SAN,TIDY Debug builds
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 06:58:49 +01:00
surtur 57fae8f582
generate_random_data: return early on invalid arg
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 05:44:37 +01:00
surtur 53cde1371f
generator: improve iteration
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 05:40:22 +01:00
surtur e0448d6d08
fortuna,generator: better printing
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 05:20:52 +01:00
surtur ad71199e1a
cmake: look for fmtlib system pkg first
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 04:48:48 +01:00
surtur a2020d212d
cmake: add -W{conversion,shadow,cast-qual}
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 04:24:43 +01:00
surtur 01a9797569
cmake: ThreadSan on (NOT SAN), avoid *San clashes
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 04:22:32 +01:00
surtur 97b178f243
cmake: -Wformat -> -Wformat=2
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 04:11:57 +01:00
surtur dec7875276
cmake: look for threads lib in a portable way
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 04:09:44 +01:00
surtur 0bac9f83d3
generator: fix generate_random_data() function
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-14 01:09:24 +01:00
surtur 879a8c69d3
fortuna: add urandom_entropy_src_service prototype
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 07:19:52 +01:00
surtur 6a2362be37
fortuna: ++(informative value of print messages)
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 06:50:37 +01:00
surtur bdfd64475f
fortuna: improve PRNG initialization mutex logic
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 06:41:57 +01:00
surtur 73cf5545dd
makefile: smarter clean target - prevent bad stuff
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 06:28:45 +01:00
surtur 9f738e97ec
accumulator: actually register the pool
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 06:21:57 +01:00
surtur d6e97e3fda
SeedFileManager: initialize RUNNING with constinit
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 06:18:43 +01:00
surtur 15798773a9
SeedFileManager: mark ctor explicit
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 06:08:40 +01:00
surtur a0df93c9ec
clang-format: BinPack{Arguments,Parameters}: false
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 06:04:18 +01:00
surtur 03578f9016
accumulator: refactor entropy_src,add files
All checks were successful
continuous-integration/drone/push Build is passing
* add event_scheduler_impl.h and properly override its base class
* add urandom_entropy_src.cpp, move there logic from header
* add urandom_entropy_src.cpp to CMakeLists.txt
* add unique_ptr per impl: one for both EventSchedulerImpl and
  EventAdderImpl each
* wrap a call in reinterpret_cast and reformat code
* add missing includes (best effort)
2022-01-13 05:40:33 +01:00
surtur 8c3aee1b07
fortuna: use a proper shared_ptr to Generator
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 03:02:31 +01:00
surtur 226a5c2c6c
sfm: improve the job "RUNNING" logic, use static
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 02:49:45 +01:00
surtur 2c3d5b4528
g: simplify generate_random_data() hexdecode block
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 02:15:23 +01:00
surtur 4d0785b002
generator::R_state: make ctor,dtor noexcept
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-13 01:51:33 +01:00
surtur 643e7aabf6
fortuna: add basic joinability check
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 03:41:24 +01:00
surtur 767da88531
accumulator: check entropy sources before adding
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-11 05:38:02 +01:00
surtur 1181518a77
fmtlog: bump (manually) to v2.1.1
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-11 04:47:34 +01:00
surtur a7cd73a3fc
add .editorconfig [skip ci] 2022-01-10 08:55:07 +01:00
surtur 3553968d52
fortuna: add accumulator service,thread
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-10 07:57:11 +01:00
surtur 1817b4a82e
fortuna: add print mutex, impl with unique_lock
All checks were successful
continuous-integration/drone/push Build is passing
* used for orderly printing to screen, currently only used by the two of
  the services: generator_service and seed_file_manager_service
* lock the mutex in a unique_lock only when printing to screen, unlock
  it immediately after printing is done
* use proper chrono type for sleep_time (instead of uint)
* also, generator_service is no longer a static method
2022-01-10 07:43:55 +01:00