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