#pragma once

#include <openssl/rand.h>

#include <iostream>
#include <limits>
#include <cstdint>

namespace bmcweb {

struct OpenSSLGenerator {
  uint8_t operator()() {
    uint8_t index = 0;
    int rc = RAND_bytes(&index, sizeof(index));
    if (rc != opensslSuccess) {
      std::cerr << "Cannot get random number\n";
      err = true;
    }

    return index;
  }

  static constexpr uint8_t max() { return std::numeric_limits<uint8_t>::max(); }
  static constexpr uint8_t min() { return std::numeric_limits<uint8_t>::min(); }

  bool error() const { return err; }

  // all generators require this variable
  using result_type = uint8_t;

 private:
  // RAND_bytes() returns 1 on success, 0 otherwise. -1 if bad function
  static constexpr int opensslSuccess = 1;
  bool err = false;
};

}  // namespace bmcweb
