9#ifndef BOTAN_DATA_SRC_H_
10#define BOTAN_DATA_SRC_H_
12#include <botan/secmem.h>
36 [[nodiscard]]
virtual size_t read(uint8_t out[],
size_t length) = 0;
56 [[nodiscard]]
virtual size_t peek(uint8_t out[],
size_t length,
size_t peek_offset)
const = 0;
68 virtual std::string
id()
const {
return ""; }
76 size_t read_byte(uint8_t& out);
83 std::optional<uint8_t> read_byte();
91 size_t peek_byte(uint8_t& out)
const;
98 size_t discard_next(
size_t N);
134 size_t read(uint8_t buf[],
size_t length)
override;
143 size_t peek(uint8_t buf[],
size_t length,
size_t offset)
const override;
184 m_source.assign(in.begin(), in.end());
216 size_t read(uint8_t buf[],
size_t length)
override;
225 size_t peek(uint8_t buf[],
size_t length,
size_t offset)
const override;
244 std::string
id()
const override;
253#if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM)
277 const std::string m_identifier;
279 std::unique_ptr<std::istream> m_source_memory;
280 std::istream& m_source;
#define BOTAN_PUBLIC_API(maj, min)
#define BOTAN_FUTURE_EXPLICIT
DataSource_Memory(const std::vector< uint8_t > &in)
DataSource_Memory(secure_vector< uint8_t > in)
DataSource_Memory(std::string_view in)
size_t read(uint8_t buf[], size_t length) override
bool check_available(size_t n) override
DataSource_Memory(std::span< const uint8_t > in)
size_t peek(uint8_t buf[], size_t length, size_t offset) const override
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
BOTAN_FUTURE_EXPLICIT DataSource_Stream(std::istream &in, std::string_view id="<std::istream>")
size_t get_bytes_read() const override
DataSource_Stream & operator=(DataSource_Stream &&)=delete
DataSource_Stream(const DataSource_Stream &)=delete
size_t read(uint8_t buf[], size_t length) override
size_t peek(uint8_t buf[], size_t length, size_t offset) const override
DataSource_Stream(DataSource_Stream &&)=delete
bool check_available(size_t n) override
DataSource_Stream & operator=(const DataSource_Stream &)=delete
std::string id() const override
virtual std::string id() const
DataSource & operator=(DataSource &&)=default
DataSource(DataSource &&)=default
Move constructor.
DataSource(const DataSource &)=delete
virtual size_t get_bytes_read() const =0
virtual ~DataSource()=default
DataSource()=default
Default constructor.
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