Commit Graph

304 Commits

Author SHA1 Message Date
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
a6719d4947
accumulator: add add_source
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 02:27:52 +01:00
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
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
2fbf5464a0
fortuna: erase -> clear
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 01:20:34 +01:00
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
b9676226c5
chore(generator): erase -> clear
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 01:10:14 +01:00
a7e8caa26e
generator: memcpy -> memmove
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-11 01:04:57 +01:00
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
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
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
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
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
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
872e6f7f9f
add event_adder_impl
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-08 03:58:18 +01:00
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
0e3caebb6d
chore(fortuna): formatting
[skip ci]
2021-12-08 03:31:47 +01:00
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
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
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
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
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
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
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
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
cf0e548315
pre-commit: exclude the lib folder
[skip ci]
2021-12-05 03:10:50 +01:00
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
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
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
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
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
bb12cf7b56
cmake: always set -Wall
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-02 14:50:39 +01:00
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
0c2a1c6744
finalise generator
All checks were successful
continuous-integration/drone/push Build is passing
commit a64b52e5a4e71785598322991688f8720e0f1693
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
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
e531aa6289
cmake: print version
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:55 +01:00
fad32c0a41
makefile: cppcheck suppress "missingIncludeSystem"
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:55 +01:00
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
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
4cea227cdd
generator: prefer preincrement
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-20 22:31:54 +01:00
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
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
225952a7e2
fix(fortuna): add end-of-namespace comment
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-19 20:59:12 +01:00
bd421295c4
feat: use fmt instead of iostreams
All checks were successful
continuous-integration/drone/push Build is passing
switch to fmt - "A modern formatting library" - for fun and profit,
currently in header-only configuration.

ref: https://github.com/fmtlib/fmt

closes #5
closes #4
2021-11-18 22:05:05 +01:00
9fd35eee93
cmake: require the declared cxx standard
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-18 19:49:15 +01:00
8d8129dc40
refactor(generator): use solely SHA3
All checks were successful
continuous-integration/drone/push Build is passing
still in test mode (see the assert) at the moment
2021-11-17 23:40:38 +01:00
85907e7178
generator: add a meaningful assert message
All checks were successful
continuous-integration/drone/push Build is passing
should help with debugging...
2021-11-16 00:17:16 +01:00
c82d3912f5
generator: add CTR-mode Serpent to random_data()
All checks were successful
continuous-integration/drone/push Build is passing
operate on a fixed string with randomly generated key and iv block on
each run.

this is neither finished nor correct implementation, it currently also
calls the Decryption routine to prove that it's working properly with
the input given ("Oh, I am fortune's fool!" seemed fitting for fortuna).
2021-11-15 23:37:04 +01:00
b934b11aa9
cmake(release): harden the build
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 23:07:59 +01:00
0199fbd675
cmake: optimize for debugging with -Og
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 23:04:37 +01:00