9#ifndef BOTAN_DATA_SRC_H_
10#define BOTAN_DATA_SRC_H_
12#include <botan/secmem.h>
35 [[nodiscard]]
virtual size_t read(uint8_t out[],
size_t length) = 0;
50 [[nodiscard]]
virtual size_t peek(uint8_t out[],
size_t length,
size_t peek_offset)
const = 0;
62 virtual std::string
id()
const {
return ""; }
70 size_t read_byte(uint8_t& out);
78 size_t peek_byte(uint8_t& out)
const;
85 size_t discard_next(
size_t N);
103 size_t read(uint8_t[],
size_t)
override;
104 size_t peek(uint8_t[],
size_t,
size_t)
const override;
119 DataSource_Memory(
const uint8_t in[],
size_t length) : m_source(in, in + length), m_offset(0) {}
131 explicit DataSource_Memory(std::span<const uint8_t> in) : m_source(in.begin(), in.end()), m_offset(0) {}
137 explicit DataSource_Memory(
const std::vector<uint8_t>& in) : m_source(in.begin(), in.end()), m_offset(0) {}
151 size_t read(uint8_t[],
size_t)
override;
152 size_t peek(uint8_t[],
size_t,
size_t)
const override;
155 std::string
id()
const override;
159#if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM)
177 const std::string m_identifier;
179 std::unique_ptr<std::istream> m_source_memory;
180 std::istream& m_source;
#define BOTAN_PUBLIC_API(maj, min)
DataSource_Memory(const std::vector< uint8_t > &in)
size_t read(uint8_t[], size_t) override
DataSource_Memory(secure_vector< uint8_t > in)
DataSource_Memory(std::string_view in)
size_t peek(uint8_t[], size_t, size_t) const override
bool check_available(size_t n) override
DataSource_Memory(std::span< const uint8_t > in)
DataSource_Memory(const uint8_t in[], size_t length)
size_t get_bytes_read() const override
bool end_of_data() const override
~DataSource_Stream() override
bool end_of_data() const override
size_t peek(uint8_t[], size_t, size_t) const override
size_t get_bytes_read() const override
DataSource_Stream(const DataSource_Stream &)=delete
DataSource_Stream(std::istream &, std::string_view id="<std::istream>")
bool check_available(size_t n) override
size_t read(uint8_t[], size_t) override
DataSource_Stream & operator=(const DataSource_Stream &)=delete
std::string id() const override
virtual std::string id() const
DataSource(const DataSource &)=delete
virtual size_t get_bytes_read() const =0
virtual ~DataSource()=default
virtual size_t peek(uint8_t out[], size_t length, size_t peek_offset) const =0
virtual size_t read(uint8_t out[], size_t length)=0
virtual bool check_available(size_t n)=0
virtual bool end_of_data() const =0
DataSource & operator=(const DataSource &)=delete
std::vector< T, secure_allocator< T > > secure_vector