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

44 lines
879 B
C
Raw Normal View History

2021-10-19 15:05:18 +02:00
#ifndef FORTUNA_GENERATOR_H
#define FORTUNA_GENERATOR_H
#include <string>
2021-10-19 15:05:18 +02:00
namespace fortuna {
namespace generator {
class Generator {
public:
Generator(); // ad noexcept: perhaps _do_ throw*
~Generator();
auto generate_blocks(unsigned int k_blocks) -> std::string;
2021-10-19 15:05:18 +02:00
private:
struct G_state {
int64_t k;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
unsigned __int128 ctr;
#pragma GCC diagnostic pop
};
G_state G;
void initialize_generator();
2021-10-24 22:11:29 +02:00
auto reseed(const std::string& s) -> void;
auto do_sha(const std::string& k_n_s) -> std::string;
auto do_crypto() -> std::string;
2021-10-19 15:05:18 +02:00
/* 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
2021-10-19 15:05:18 +02:00
} //namespace generator
} //namespace fortuna
2021-10-19 15:05:18 +02:00
#endif//FORTUNA_GENERATOR_H