switch to fmt - "A modern formatting library" - for fun and profit,
currently in header-only configuration.
ref: https://github.com/fmtlib/fmtcloses#5closes#4
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).
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
* 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
* 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
squashed the following:
commit a28354d585790a1811c66117cf49439354836ee5
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 926216fad389291757408e7c782006cbfd8ddf19
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 01eadae32ff7a071fa28312093e5792be5c6c129
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
* 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
the find "query" is a little naive but hey, we're looking at the usual
place. the purpose of this change is iteration speedup and as lld is the
quickest kid on the block, we're using it.
cmake:
* check if we're being run for valgrind, in which case do not split
dwarf information, valgrinds does not like it (see #1).
makefile:
* build for vagrant into a separate folder entirely.
ci:
* install gcc, cmake and ninja along with vagrant, since now we are
building inside of the ci container as well.
close#1
* that is, both in ci, pre-commit config and in the makefile
* makefile and ci args are a little more strict than the pre-commit ones
* use globs of the file extensions we're after
* add verbosity
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