8#ifndef BOTAN_ROUGHTIME_H_
9#define BOTAN_ROUGHTIME_H_
15#include <botan/ed25519.h>
60 explicit Nonce(
const std::vector<uint8_t>& nonce);
72 explicit Nonce(
const std::array<uint8_t, 64>& nonce) : m_nonce(nonce) {}
85 const std::array<uint8_t, 64>&
get_nonce()
const {
return m_nonce; }
88 std::array<uint8_t, 64> m_nonce;
126 static Response
from_bits(
const std::vector<uint8_t>& response,
const Nonce& nonce);
148 Response(
const std::array<uint8_t, 72>& dele,
149 const std::array<uint8_t, 64>& sig,
150 sys_microseconds64 utc_midp,
151 microseconds32 utc_radius) :
152 m_cert_dele(dele), m_cert_sig(sig), m_utc_midpoint{utc_midp}, m_utc_radius{utc_radius} {}
154 const std::array<uint8_t, 72> m_cert_dele;
155 const std::array<uint8_t, 64> m_cert_sig;
156 const sys_microseconds64 m_utc_midpoint;
157 const microseconds32 m_utc_radius;
178 const std::vector<uint8_t>&
response()
const {
return m_response; }
199 std::vector<uint8_t> m_response;
201 Nonce m_nonce_or_blind;
218 explicit Chain(std::string_view str);
224 const std::vector<Link>&
links()
const {
return m_links; }
230 std::vector<Response> responses()
const;
244 void append(
const Link& new_link,
size_t max_chain_size);
253 std::vector<Link> m_links;
263Nonce
nonce_from_blind(const std::vector<uint8_t>& previous_response, const Nonce& blind);
275 std::chrono::milliseconds timeout = std::chrono::seconds(3));
290 const std::vector<std::string>&
addresses) :
297 const std::string&
name()
const {
return m_name; }
309 const std::vector<std::string>&
addresses()
const {
return m_addresses; }
314 std::vector<std::string> m_addresses;
#define BOTAN_PUBLIC_API(maj, min)
Decoding_Error(std::string_view name)
const std::vector< Link > & links() const
const Ed25519_PublicKey & public_key() const
const Nonce & nonce_or_blind() const
const std::vector< uint8_t > & response() const
Link(const std::vector< uint8_t > &response, const Ed25519_PublicKey &public_key, const Nonce &nonce_or_blind)
const std::array< uint8_t, 64 > & get_nonce() const
Nonce(const std::array< uint8_t, 64 > &nonce)
bool operator==(const Nonce &rhs) const
std::chrono::time_point< std::chrono::system_clock, microseconds64 > sys_microseconds64
microseconds32 utc_radius() const
sys_microseconds64 utc_midpoint() const
std::chrono::duration< uint32_t, std::micro > microseconds32
static Response from_bits(const std::vector< uint8_t > &response, const Nonce &nonce)
std::chrono::duration< uint64_t, std::micro > microseconds64
bool validate(const Ed25519_PublicKey &pk) const
ErrorType error_type() const noexcept override
Roughtime_Error(std::string_view s)
std::vector< Server_Information > servers_from_str(std::string_view str)
std::vector< uint8_t > online_request(std::string_view uri, const Nonce &nonce, std::chrono::milliseconds timeout)
Nonce nonce_from_blind(const std::vector< uint8_t > &previous_response, const Nonce &blind)
std::array< uint8_t, request_min_size > encode_request(const Nonce &nonce)
const unsigned request_min_size
std::string to_string(ErrorType type)
Convert an ErrorType to string.