This repository has been archived on 2022-02-10. You can view files and clone it, but cannot push or open issues or pull requests.
fortuna/generator.h
surtur f64295f052
All checks were successful
continuous-integration/drone/push Build is passing
move to oop paradigm
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

37 lines
672 B
C++

#ifndef FORTUNA_GENERATOR_H
#define FORTUNA_GENERATOR_H
#include <string>
namespace fortuna {
namespace generator {
using namespace std;
class Generator {
public:
void initialize_generator();
private:
struct G_state;
auto reseed(const string& s) -> void;
auto do_sha(int64_t key_with_seed) -> int64_t;
auto do_crypto(int64_t k, unsigned __int128 ctr) -> string;
auto generate_blocks(int k_blocks) -> string;
/* n is the number of random bytes to generate */
auto generate_random_data(uint n) -> string;
protected:
auto get_state() -> Generator::G_state;
}; // class generator
} //namespace generator
} //namespace fortuna
#endif//FORTUNA_GENERATOR_H