pool: move logic to the source file
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
surtur 2022-01-10 05:07:18 +01:00
parent 4b216a6f6e
commit ebcc4f87d5
Signed by: wanderer
GPG Key ID: 19CE1EC1D9E0486D
2 changed files with 81 additions and 65 deletions

View File

@ -6,7 +6,78 @@
namespace fortuna {
namespace accumulator {
} //namespace accumulator
} //namespace fortuna
auto Pool::set_id(unsigned int id) -> void {
pool_id = id;
}
#endif//FORTUNA_POOL_CPP
auto Pool::initialize_pool(unsigned int id) -> void {
set_id(id);
}
auto Pool::add_entropy(const uint source, const std::vector<char>& event)
-> int {
std::string event_str;
const size_t event_size{event.size()};
try {
if (source > 255) {
throw std::invalid_argument(
"source number outside of interval <0,255>\n");
}
if (event_size < 1 || event_size > 32) {
throw std::invalid_argument("the length of the event needs to "
"be from the interval <1,32>\n");
}
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
try {
event_str = std::string(event.begin(), event.end());
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
try {
std::string digest(fortuna::Util::do_sha(event_str));
size += event_size;
append_s(digest);
digest.clear();
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
return 0;
} // add_entropy
auto Pool::get_s_length() const -> uint64_t {
// returns total length of entropy contained in this pool
return this->s.length();
}
auto Pool::get_s() const -> std::string {
return this->s;
}
auto Pool::clear_pool() -> void {
this->s.clear();
}
auto Pool::append_s(const std::string& entropy_s) -> void {
try {
(this->s).append(std::string(entropy_s));
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
}
} // namespace accumulator
} // namespace fortuna
#endif // FORTUNA_POOL_CPP

69
pool.h
View File

@ -15,78 +15,23 @@ public:
Pool(const Pool& pool) = delete; // no copy
~Pool() noexcept = default;
// TODO(me): this public setter should be fixed?
auto set_id(unsigned int id) -> void {
pool_id = id;
}
auto set_id(unsigned int id) -> void;
auto get_id() const -> unsigned int;
auto initialize_pool(unsigned int id) -> void {
set_id(id);
}
auto initialize_pool(unsigned int id) -> void;
// add entropy contained in a random event of 1 to 32 bytes
auto add_entropy(const uint source, const std::vector<char>& event) -> int {
std::string event_str;
const size_t event_size{event.size()};
auto add_entropy(const uint source, const std::vector<char>& event) -> int;
try {
if (source > 255) {
throw std::invalid_argument(
"source number outside of interval <0,255>\n");
}
if (event_size < 1 || event_size > 32) {
throw std::invalid_argument("the length of the event needs to "
"be from the interval <1,32>\n");
}
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
auto get_s_length() const -> uint64_t;
try {
event_str = std::string(event.begin(), event.end());
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
auto get_s() const -> std::string;
try {
std::string digest(fortuna::Util::do_sha(event_str));
size += event_size;
append_s(digest);
digest.clear();
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
return 0;
}
auto get_s_length() const -> uint64_t {
// returns total length of entropy contained in this pool
return this->s.length();
}
auto get_s() const -> std::string {
return this->s;
}
auto clear_pool() -> void {
this->s.clear();
}
auto clear_pool() -> void;
protected:
auto append_s(const std::string& entropy_s) -> void {
try {
(this->s).append(std::string(entropy_s));
}
catch (const std::exception& e) {
fmt::print("{}", e.what());
}
}
auto append_s(const std::string& entropy_s) -> void;
private:
unsigned int pool_id{0};