Commit Graph

42 Commits

Author SHA1 Message Date
surtur fab8e72975
chore(generator): rm comment [skip ci] 2022-02-03 02:06:19 +01:00
surtur 1da24b13da
{,generate_}random_data: use const uint64_t
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-03 01:53:53 +01:00
surtur 80fcb13e8b
generator: use least-significant-byte-first ctr
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-30 22:56:08 +01:00
surtur 1a02256b2b
generator: add ctr_inc() fun
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-27 22:54:53 +01:00
surtur 715523eb1a
generator: add std::array<std::byte, 16> counter
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-27 22:48:58 +01:00
surtur c40806e68d
generator: create permanent Serpent encryption obj
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-26 22:35:45 +01:00
surtur 674ceedc4a
gen: mtx -> mutable recursive_mtx to all functions
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-20 08:36:02 +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 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 4b216a6f6e
refactor: clang-format
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-10 04:25:03 +01:00
surtur 795b9ffe54
add proper SeedFileManager implementation
All checks were successful
continuous-integration/drone/push Build is passing
a couple of fixes/necessary additions were made along the way, namely:
* add a default constructor for DoTask
* rework of the mutex/lock_guard/unique_lock logic in generator/fortuna
* add .fortuna.seed to the list of the ignored (.gitignore)
* add helper function to util for convertin bytes to blocks (16b==block)
* add a wrapper for around the SeedFileManager instance and a way to see
  if it's dead or alive (so that it can be restarted if needed)
* the timeout for saving of the seed file has been decreased to a more
  reasonable value than 10 minutes (I wouldn't want to lose potentially
  up to 10 minutes worth of entropy)
2022-01-09 11:58:38 +01:00
surtur 701774eab0
chore(generator): rm ; after function definition
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-08 07:22:38 +01:00
surtur 1cba4dea10
generator: make get_state() const
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-06 16:47:46 +01:00
surtur cc26b654d4
generator: add time_to_reseed() prototype
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-04 06:41:12 +01:00
surtur 158545f401
generator: rm bogus reseed+add lock guards
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-03 06:29:16 +01:00
surtur f831c16bce
generator: no copies
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-03 01:02:53 +01:00
surtur 64d7a389ad
generator: add service method prototype
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-02 07:40:59 +01:00
surtur 65c476dbd6
add Util class + perform general refactor
All checks were successful
continuous-integration/drone/push Build is passing
* rm duplicate do_sha() code, consolidate in Util
* make reseed() public so that it can be called from outside
* rm reseed() from do_crypto() where it has no place
2021-12-13 05:10:07 +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 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 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 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 2f2f47da01
generator: silence pedantic warnings for __int128
All checks were successful
continuous-integration/drone/push Build is passing
in fortuna, a use of 128bit integer is necessary, which also violates ISO C++:
"warning: ISO C++ does not support ‘__int128’ for ‘ctr’ [-Wpedantic]"

enclosing only the problematic blocks in ignore is chosen as a superior
course of action, compared to completely removing "-Wpedantic" from
CXX_FLAGS, as proposed in #2, as that would prevent any further
"pedantic" warnings from any further code to be shown.

this way, it is assured that the warning "ignore" is activated after
push the push, after which the environment is returned back to its
previous state with a pop, allowing any further warnings to appear.

closes #2
2021-11-15 22:47:22 +01:00
surtur 2cd8345c4e
refactor: use HexEncoder's built-in lowercase
All checks were successful
continuous-integration/drone/push Build is passing
remove the custom-defined strtolowerpls from generator
2021-11-14 22:23:50 +01:00
surtur d8adb1af87
refactor(all): using namespace considered harmful
All checks were successful
continuous-integration/drone/push Build is passing
* project-wide refactor to accomodate removal of "using namespace xyz"
  to stop polluting top-level namespace with "std" as recommended by the
  Google C++ style guide.
* use a pre-commit hook to enforce this

ref:
https://google.github.io/styleguide/cppguide.html#Namespaces
2021-11-13 22:13:50 +01:00
surtur f16c630ae7
generator: implement do_sha()
All checks were successful
continuous-integration/drone/push Build is passing
* link against cryptopp
* use both sha2 and sha3 generation functions
* try calling do_sha() directly
* call reseed() that in turn calls do_sha()
* return a bogus number, not the proper digest for now (see TODOs)

cryptopp needed to be installed to archlinux for the valgrind step to
pass successfully
2021-11-11 04:11:40 +01:00
surtur 73f8bd75a2
generator: add strtolowerpls method
All checks were successful
continuous-integration/drone/push Build is passing
a convenience method, transforms strings to lowercase
2021-11-11 04:10:07 +01:00
surtur 40ae062657
generator: the number of blocks has to be >= 0
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-08 12:39:56 +01:00
surtur d986b6b482
generator: make generate_blocks() public
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-08 09:45:30 +01:00
surtur f64295f052
move to oop paradigm
All checks were successful
continuous-integration/drone/push Build is passing
squashed the following:

commit a28354d585
Author: surtur <a_mirre@utb.cz>
Date:   Wed Nov 3 02:14:35 2021 +0100

    chore: make G_state a private structure

    * make G_state private
    * move protected section behind private
    * also do cleanup a little -> k and ctr won't exist as part of the
      generator outside of the G_state struct

commit 926216fad3
Author: surtur <a_mirre@utb.cz>
Date:   Wed Nov 3 01:37:28 2021 +0100

    chore: make methods aware of objects

    as a consequence we stopped returning the generator state from every
    function and equally stopped using it as a parameter to every generator
    method that handles the state in any way

commit 01eadae32f
Author: surtur <a_mirre@utb.cz>
Date:   Tue Nov 2 05:10:58 2021 +0100

    feat: move from structural to object paradigm

    * declare and implement Generator class and member methods
    * create an instance of Generator in main
    * call initialize_generator() from main
2021-11-03 02:57:23 +01:00
surtur b0eaf5e49e
generator(reseed): concat k with seed, ctr++
All checks were successful
continuous-integration/drone/push Build is passing
also got rid of the redundant ctr variable as we only need the one that
is part of G_state.
2021-11-02 04:40:08 +01:00
surtur 7a133ab2dc
namespace-wrap the generator function block
All checks were successful
continuous-integration/drone/push Build is passing
* the purpose is to subdivide the global scope
* use 'fortuna' as the top-level namespace
* use 'generator' namespace for the generator functions
* wrap the entire file after includes
2021-11-02 04:40:07 +01:00
surtur 8c1dfea06e
modernise: use trailing return type
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-30 21:53:47 +02:00
surtur 46e5048788
add reseed() and do_sha() functions
All checks were successful
continuous-integration/drone/push Build is passing
currently the bodies of the functions are pretty much bogus
2021-10-30 21:42:47 +02:00
surtur 92946eec91
chore: use int64_t instead of long
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-30 21:41:21 +02:00
surtur c0efa75c1a
switch to using {tuples,128bit int for ctr}
All checks were successful
continuous-integration/drone/push Build is passing
multiple changes combined in a single commit, I know...

also, a move towards the use of OOP paradigm is imminent as we now have
to do rewrites at multiple places in the code for any minor change
2021-10-27 18:47:52 +02:00
surtur cb4bca0b30
ctr should never be negative, use unsigned
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-24 23:44:43 +02:00
surtur 88414b445d
rename c to ctr
All checks were successful
continuous-integration/drone/push Build is passing
of "c" and "ctr", the latter resembles "counter" sound more
2021-10-24 23:16:48 +02:00
surtur 7eef4f2951
add do_crypto declaration
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-24 23:04:50 +02:00
surtur 6cfd9e847e
generator.h: add both string and cstring
All checks were successful
continuous-integration/drone/push Build is passing
..since we depend on both
2021-10-24 22:04:14 +02:00
surtur c44fa825c4
initial commit 2021-10-24 21:29:49 +02:00