Botan 3.6.1
Crypto and TLS for C&
Botan::Stream_Decompression Class Referenceabstract

#include <compression.h>

Inheritance diagram for Botan::Stream_Decompression:
Botan::Decompression_Algorithm Botan::Bzip2_Decompression Botan::Deflate_Decompression Botan::Gzip_Decompression Botan::LZMA_Decompression Botan::Zlib_Decompression

Public Member Functions

void clear () final
 
void finish (secure_vector< uint8_t > &buf, size_t offset) final
 
virtual std::string name () const =0
 
void update (secure_vector< uint8_t > &buf, size_t offset) final
 

Static Public Member Functions

static std::unique_ptr< Decompression_Algorithmcreate (std::string_view algo_spec)
 
static std::unique_ptr< Decompression_Algorithmcreate_or_throw (std::string_view algo_spec)
 

Detailed Description

FIXME add doc

Definition at line 233 of file compression.h.

Member Function Documentation

◆ clear()

void Botan::Stream_Decompression::clear ( )
finalvirtual

Reset the state and abort the current message; start can be called again to process a new message.

Implements Botan::Decompression_Algorithm.

Definition at line 124 of file compress_utils.cpp.

124 {
125 m_stream.reset();
126}

◆ create()

std::unique_ptr< Decompression_Algorithm > Botan::Decompression_Algorithm::create ( std::string_view algo_spec)
staticinherited

Create an instance based on a name, or return null if the algo combination cannot be found.

Definition at line 67 of file compression.cpp.

67 {
68#if defined(BOTAN_HAS_ZLIB)
69 if(name == "Zlib" || name == "zlib") {
70 return std::make_unique<Zlib_Decompression>();
71 }
72 if(name == "Gzip" || name == "gzip" || name == "gz") {
73 return std::make_unique<Gzip_Decompression>();
74 }
75 if(name == "Deflate" || name == "deflate") {
76 return std::make_unique<Deflate_Decompression>();
77 }
78#endif
79
80#if defined(BOTAN_HAS_BZIP2)
81 if(name == "bzip2" || name == "bz2" || name == "Bzip2") {
82 return std::make_unique<Bzip2_Decompression>();
83 }
84#endif
85
86#if defined(BOTAN_HAS_LZMA)
87 if(name == "lzma" || name == "xz" || name == "LZMA") {
88 return std::make_unique<LZMA_Decompression>();
89 }
90#endif
91
93 return nullptr;
94}
#define BOTAN_UNUSED
Definition assert.h:118
virtual std::string name() const =0

References BOTAN_UNUSED, and Botan::Decompression_Algorithm::name().

Referenced by Botan::Decompression_Algorithm::create_or_throw(), and Botan::make_decompressor().

◆ create_or_throw()

std::unique_ptr< Decompression_Algorithm > Botan::Decompression_Algorithm::create_or_throw ( std::string_view algo_spec)
staticinherited

Create an instance based on a name

Parameters
algo_specalgorithm name Throws Lookup_Error if not found.

Definition at line 97 of file compression.cpp.

97 {
98 if(auto decompressor = Decompression_Algorithm::create(algo)) {
99 return decompressor;
100 }
101 throw Lookup_Error("Decompression", algo, "");
102}
static std::unique_ptr< Decompression_Algorithm > create(std::string_view algo_spec)

References Botan::Decompression_Algorithm::create().

◆ finish()

void Botan::Stream_Decompression::finish ( secure_vector< uint8_t > & final_block,
size_t offset )
finalvirtual

Finish decompressing

Decompress the material in the in/out parameter buf. The leading offset bytes of buf are ignored and remain untouched; this can be useful for ignoring packet headers.

This function may throw if the data seems to be invalid.

Parameters
final_blockin/out parameter
offsetan offset into final_block to begin processing

Implements Botan::Decompression_Algorithm.

Definition at line 178 of file compress_utils.cpp.

178 {
179 if(buf.size() != offset || m_stream.get()) {
180 process(buf, offset, m_stream->finish_flag());
181 }
182
183 if(m_stream) {
184 throw Invalid_State(fmt("{} finished but not at stream end", name()));
185 }
186}
std::string fmt(std::string_view format, const T &... args)
Definition fmt.h:53

References Botan::fmt(), and Botan::Decompression_Algorithm::name().

◆ name()

virtual std::string Botan::Decompression_Algorithm::name ( ) const
pure virtualinherited

◆ update()

void Botan::Stream_Decompression::update ( secure_vector< uint8_t > & buf,
size_t offset )
finalvirtual

Process some data.

Parameters
bufin/out parameter which will possibly be resized or swapped
offsetan offset into blocks to begin processing

Implements Botan::Decompression_Algorithm.

Definition at line 174 of file compress_utils.cpp.

174 {
175 process(buf, offset, m_stream->run_flag());
176}

The documentation for this class was generated from the following files: