Commit Graph

312 Commits

Author SHA1 Message Date
surtur da48e61cc2
add da_threading lib
All checks were successful
continuous-integration/drone/push Build is passing
retrieved from https://stackoverflow.com/a/46135882
original author LWimsey <https://stackoverflow.com/users/6651824/lwimsey> (c) 2017
edited and made into a header-only lib by wanderer <a_mirre at utb.cz> (c) 2021
2021-12-12 22:50:06 +01:00
surtur cf41d323a4
fortuna: add task runner "do_task"; link pthread
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-12 18:42:47 +01:00
surtur 2a67a37cbe
generator: add is_seeded method
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-12 18:40:29 +01:00
surtur b55ca33e24
chore(fortuna): add random_data() checks, batch 1
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-12 06:14:58 +01:00
surtur d907c9db6e
generator: tweak generate_random_data logic
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 21:33:42 +01:00
surtur fb02ef9a23
generator: make dtor noexcept
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 20:43:48 +01:00
surtur 55a19e6681
chore(event_adder_impl): pool int -> uint8_t
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 20:16:24 +01:00
surtur 2d20242b3e
accumulator(pool): (partly) implement add_entropy
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 02:53:47 +01:00
surtur 0ccd60ce1b
Merge branch 'fixing-generator' into add-random-sources
All checks were successful
continuous-integration/drone/push Build is passing
* fixing-generator:
  generator: use a proper uin64_t literal
  chore(generator): erase -> clear
  generator: memcpy -> memmove
  fix(generator): incorrect copying, no protections
2021-12-11 02:35:06 +01:00
surtur a6719d4947
accumulator: add add_source
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 02:27:52 +01:00
surtur d0e9b08886
accumulator: add urandom_entropy_src
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 02:24:40 +01:00
surtur a5b988ba71
accumulator: add event_scheduler,entropy_src ifces
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 02:12:49 +01:00
surtur 2fbf5464a0
fortuna: erase -> clear
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 01:20:34 +01:00
surtur 25cbddf41f
generator: use a proper uin64_t literal
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 01:13:01 +01:00
surtur b9676226c5
chore(generator): erase -> clear
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 01:10:14 +01:00
surtur a7e8caa26e
generator: memcpy -> memmove
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 01:04:57 +01:00
surtur 595245fbce
fix(generator): incorrect copying, no protections
All checks were successful
continuous-integration/drone/push Build is passing
* use try-catch whenever possible
* perform memcpy operations in the right direction
* make greater use of local constants
* use more of the braced initializations
* there were memcpy operations of incorrect sizes in place, particularly
  in regard to generator key (G.k) and counter (G.ctr), which resulted
  in key bytes being set to garbage
2021-12-10 20:02:30 +01:00
surtur 801d605e2a
chore(clang-tidy): unify flags
All checks were successful
continuous-integration/drone/push Build is passing
also add a status message to CMake's output
2021-12-10 18:57:25 +01:00
surtur 053d2187a2
chore(accumulator): make use of init_pool_num
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-09 14:11:39 +01:00
surtur 8b4cd4b6e8
fortuna(random_data): time-tracking precision++
All checks were successful
continuous-integration/drone/push Build is passing
using floats does wonders
2021-12-08 23:17:37 +01:00
surtur 82288fe20d
chore(event_adder_impl): reuse constant p_size
All checks were successful
continuous-integration/drone/push Build is passing
size of pools array will stay the same anyway
2021-12-08 04:19:22 +01:00
surtur c401a47ca7
event_adder_impl: loop with a pre-computed value
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-08 04:07:14 +01:00
surtur 872e6f7f9f
add event_adder_impl
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-08 03:58:18 +01:00
surtur 33f6620662
chore(pool): stop spamming at initialization
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-08 03:40:08 +01:00
surtur 0e3caebb6d
chore(fortuna): formatting
[skip ci]
2021-12-08 03:31:47 +01:00
surtur f02952d72a
fortuna(random_data): add basic time tracking
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-07 15:55:29 +01:00
surtur 9f799c83a9
fortuna: add incr_reseed_ctr
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-07 15:46:01 +01:00
surtur b96ce5d644
fortuna: wrap pool initialization in a try-catch
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-07 02:48:37 +01:00
surtur bc5bb6e700
add EventAdder interface
All checks were successful
continuous-integration/drone/push Build is passing
will be used as a base implementations of sources of random events
2021-12-06 01:02:43 +01:00
surtur 5557f0d9e6
refactor(generator): clean up includes a little
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-06 00:08:32 +01:00
surtur b14600c352
makefile: refactor "clean" target; add "distclean"
All checks were successful
continuous-integration/drone/push Build is passing
* clean now just removes the object files, dwo debugging objects, .cmake
  and intermediary .bin files but keeps CMakeCache and similar
* a new target - distclean - is introduced to do what was previously
  done by "clean", essentially: completely remove the build folders
2021-12-05 15:27:47 +01:00
surtur 7f05984946
integrate clang-tidy into cmake
All checks were successful
continuous-integration/drone/push Build is passing
* consolidate everything with the makefile, the "tidy" target now just
  sets the env var that is checked for in CMakeLists
* rm clang-tidy from pre-commit as it's run as part of the "test"
  makefile target later in the file anyway
2021-12-05 05:13:07 +01:00
surtur 53645ea160
generator: add more try-catch blocks internally
All checks were successful
continuous-integration/drone/push Build is passing
one around initialization and another when calling reseed()
2021-12-05 03:13:47 +01:00
surtur cf0e548315
pre-commit: exclude the lib folder
[skip ci]
2021-12-05 03:10:50 +01:00
surtur 6f6b3cb8e2
generator: wrap the initialization in a try-catch
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-05 02:00:25 +01:00
surtur a1cbbb209e
handle PRNG state in R_state + accumulator basis
All checks were successful
continuous-integration/drone/push Build is passing
* handle the PRNG state with R_state nested class
* add a private property R holding PRNG state to Fortuna
* add R_state properties as defined in Cryptography Engineering:
  * a generator instance
  * a reseed counter
  * 32 pools that the collected entropy is to be distributed over

* add initial definition of the Pool object and its initialization

* attempt to initialize PRNG in Fortuna constructor. wrap the
  initialization call in a try-catch block like a cultured person
* erase the string used to print data from random_data() after it's been
  used
2021-12-04 00:40:39 +01:00
surtur 72bb378709
pre-commit: add 'make san' step
All checks were successful
continuous-integration/drone/push Build is passing
making sure to build with sanitize flags before committing
2021-12-03 20:34:45 +01:00
surtur 77f1fe4c56
cmake,makefile: sanitize!
All checks were successful
continuous-integration/drone/push Build is passing
as per #3
2021-12-02 18:34:07 +01:00
surtur e72aa06813
executable hardening v2
All checks were successful
continuous-integration/drone/push Build is passing
* enable PIE
* pass flags to linker based on the build type
* enable LTO
2021-12-02 18:25:15 +01:00
surtur bb12cf7b56
cmake: always set -Wall
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-02 14:50:39 +01:00
surtur b15e1e9a55
harden executable
All checks were successful
continuous-integration/drone/push Build is passing
* fortify source
* link with "-pie"
* split stack
* set stack-protector to all
2021-11-30 15:52:17 +01:00
surtur 0c2a1c6744
finalise generator
All checks were successful
continuous-integration/drone/push Build is passing
commit a64b52e5a4
Author: surtur <a_mirre@utb.cz>
Date:   Sun Nov 21 23:39:30 2021 +0100

    finalise generator

    this commit adds a (nearly) complete implementation of the generator.

    * wrap calls to generator in a fortuna class method random_data
      * calls generator's method generate_random_data, that internally calls
        generate_blocks
    * use a proper 256bit key in G_state
    * add reseed method implementation
    * call a reseed in initialize_generator
    * do_sha returns proper digest now
    * add proper do_crypto implementation
      * call generate_blocks internally
      * handle re-keying
    * optimise header includes

    TODO: there are still many commented (enabled on demand) debugging statements
    -> TO BE REMOVED
2021-11-30 14:09:39 +01:00
surtur d942e06263
cmake: compile PIC with "-fPIC"
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:55 +01:00
surtur e531aa6289
cmake: print version
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:55 +01:00
surtur fad32c0a41
makefile: cppcheck suppress "missingIncludeSystem"
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:55 +01:00
surtur e00bc4d277
makefile(valgrind): add --leak-check=full
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:55 +01:00
surtur bcd33c2f33
chore: direct braced string initialization
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:55 +01:00
surtur 4cea227cdd
generator: prefer preincrement
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:54 +01:00
surtur 444660bf89
feat(generator): add constructor/destructor
All checks were successful
continuous-integration/drone/push Build is passing
* initialize_generator() is now a private method
* call initialize_generator() inside the constructor of the Generator
* move full struct declaration to generator.h
* have a private field named G of type G_state
* remove explicit instantiation of Generator from fortuna constructor -
  Generator is a private field of fortuna
* remove direct initialize_generator() call from fortuna constructor
* remove get_state() calls as G_state G is now a private field
* refactor get_state() to simply return the *private field G_state G*
* refactor do_crypto() - I know, this should have been split to a
  separate commit - remove function parameters and useless assignments
  inside its body to reflect that once it accesses k and ctr (of the
  G_state G), it won't be necessary for them to be passed as parameters,
  since *G_state G is now a private field*...
2021-11-20 22:31:54 +01:00
surtur 2fa7e135cb
chore(fmt): follow-up of bd42129
All checks were successful
continuous-integration/drone/push Build is passing
this time replace printf's
2021-11-19 22:32:03 +01:00