9 #ifndef BOTAN_DATA_SRC_H_
10 #define BOTAN_DATA_SRC_H_
12 #include <botan/secmem.h>
35 virtual bool check_available(
size_t n) = 0;
48 virtual size_t peek(uint8_t out[],
size_t length,
size_t peek_offset)
const BOTAN_WARN_UNUSED_RESULT = 0;
54 virtual bool end_of_data()
const = 0;
59 virtual std::string
id()
const {
return ""; }
67 size_t read_byte(uint8_t& out);
75 size_t peek_byte(uint8_t& out)
const;
82 size_t discard_next(
size_t N);
87 virtual size_t get_bytes_read()
const = 0;
101 size_t read(uint8_t[],
size_t)
override;
102 size_t peek(uint8_t[],
size_t,
size_t)
const override;
103 bool check_available(
size_t n)
override;
104 bool end_of_data()
const override;
118 m_source(in, in + length),
m_offset(0) {}
132 m_source(in.begin(), in.end()),
m_offset(0) {}
146 size_t read(uint8_t[],
size_t)
override;
147 size_t peek(uint8_t[],
size_t,
size_t)
const override;
148 bool check_available(
size_t n)
override;
149 bool end_of_data()
const override;
150 std::string id()
const override;
153 const std::string&
id =
"<std::istream>");
155 #if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM)
172 const std::string m_identifier;
174 std::unique_ptr<std::istream> m_source_memory;
175 std::istream& m_source;
DataSource_Memory(const uint8_t in[], size_t length)
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
DataSource_Memory(const secure_vector< uint8_t > &in)
#define BOTAN_WARN_UNUSED_RESULT
std::vector< T, secure_allocator< T >> secure_vector
virtual std::string id() const
size_t get_bytes_read() const override
size_t get_bytes_read() const override
DataSource_Memory(const std::vector< uint8_t > &in)