#include "crypto_core_test_util.hh" #include #include Random_Funcs const Random_Class::vtable = { Method::invoke<&Random_Class::random_bytes>, Method::invoke<&Random_Class::random_uniform>, }; Random_Class::~Random_Class() = default; void Test_Random::random_bytes(void *obj, uint8_t *bytes, size_t length) { std::generate(bytes, &bytes[length], std::ref(lcg)); } uint32_t Test_Random::random_uniform(void *obj, uint32_t upper_bound) { std::uniform_int_distribution distrib(0, upper_bound); return distrib(lcg); } PublicKey random_pk(const Random *rng) { PublicKey pk; random_bytes(rng, pk.data(), pk.size()); return pk; } std::ostream &operator<<(std::ostream &out, PublicKey const &pk) { out << '"'; for (uint8_t byte : pk) { out << std::setw(2) << std::setfill('0') << std::hex << uint32_t(byte); } out << '"'; return out; }