Commit Graph

61 Commits

Author SHA1 Message Date
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
9a9b81769f
chore(generator): directly reference std methods
All checks were successful
continuous-integration/drone/push Build is passing
instead of using "std::method" for cout and endl
2021-11-15 23:02:49 +01:00
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
c0012e36f9
chore: remove unused #include <algorithm>
All checks were successful
continuous-integration/drone/push Build is passing
* "include what you use"
2021-11-15 22:41:22 +01:00
3f411f687e
chore: header-guard encompass files properly
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 22:13:00 +01:00
20c22fef47
chore(main): don't directly work with Generator
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 22:05:07 +01:00
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
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
bad86c31df
refactor(-lcryptopp): use cmake's facilities
All checks were successful
continuous-integration/drone/push Build is passing
this means that all builds configured with cmake (not just those called
with our custom development makefile) are properly linked with cryptopp
2021-11-13 00:13:19 +01:00
1e7395f488
chore: rm bogus reseed() call, use asserts
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-11 04:13:04 +01:00
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
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
b1fcc5d055
fix(makefile): properly use -DCMAKE_CXX_FLAGS
All checks were successful
continuous-integration/drone/push Build is passing
..even if momentarily empty (no additional flags are being set from the
makefile directly, everything is set in CMakeLists.txt.
2021-11-11 02:18:01 +01:00
ea11801789
add fortuna class
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-10 23:58:42 +01:00
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
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
74f42935ed
makefile: add informational echos
[skip ci]
2021-11-08 09:41:41 +01:00
f64295f052
move to oop paradigm
All checks were successful
continuous-integration/drone/push Build is passing
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
2021-11-03 02:57:23 +01:00
f2ed6918c9
chore(makefile): add 'clean' target
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-02 04:40:08 +01:00
253acfa7e4
chore: increment using ++
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-02 04:40:08 +01:00
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
7d123ce639
main.cpp: switch to a using declaration
All checks were successful
continuous-integration/drone/push Build is passing
..instead of pulling the whole namespace
2021-11-02 04:40:08 +01:00
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
2bab9e7afa
cmake: use lld if available
All checks were successful
continuous-integration/drone/push Build is passing
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.
2021-11-02 04:40:07 +01:00
87b13e1e1e
chore(cmake): print compiler id
[skip ci]
2021-11-02 04:40:07 +01:00
c968d8c4ba
chore(cmake): force compiler colours
I know, right...

[skip ci]
2021-11-02 04:40:07 +01:00
46a6cdba3a
cmake: add {-g3,-gsplit-dwarf} flags for debugging
All checks were successful
continuous-integration/drone/push Build is passing
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
2021-11-02 04:40:07 +01:00
5f8f8ca67e
ci: use makefile targets
All checks were successful
continuous-integration/drone/push Build is passing
* re-use what has already been defined and tested locally
* verify that the makefile is functional in one fell swoop
2021-11-02 04:16:44 +01:00
639d941461
fix(makefile): release folder for release builds
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-02 04:16:44 +01:00
ebba54b940
chore(cmake): move CMAKE_CXX_FLAGS to CMakeLists
All checks were successful
continuous-integration/drone/push Build is passing
* use proper conditionals, should any overrides exist in the environment
* distinguish between debug and release builds and set flags accordingly
2021-11-01 08:54:55 +01:00
14eaaf98f7
cmake: specify project lang
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-31 23:08:41 +01:00
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
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
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
f4463d803e
chore(pre-commit): add check-hooks-apply hook
[skip ci]
2021-10-30 20:57:28 +02:00
bf61e2578e
chore(makefile): do not run valgrind with test tgt
[skip ci]
2021-10-30 20:56:43 +02:00
ec0691fba1
makefile,pre-commit: add clang-tidy
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-30 20:39:23 +02:00
519919326e
cppcheck: specify necessary parameters
All checks were successful
continuous-integration/drone/push Build is passing
* 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
2021-10-30 20:05:28 +02:00
65b081dc30
chore: edit printf formatting and comments
[skip ci]
2021-10-27 18:56:14 +02:00
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
b0d4cb2468
add .pre-commit-config.yaml
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-24 23:45:28 +02:00
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
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
7eef4f2951
add do_crypto declaration
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-24 23:04:50 +02:00