1 /* 2 * Zlib Compressor 3 * (C) 2001 Peter J Jones 4 * 2001-2007,2014 Jack Lloyd 5 * 6 * Botan is released under the Simplified BSD License (see license.txt) 7 */ 8 9 #ifndef BOTAN_ZLIB_H_ 10 #define BOTAN_ZLIB_H_ 11 12 #include <botan/compression.h> 13 14 namespace Botan { 15 16 /** 17 * Zlib Compression 18 */ 19 class BOTAN_PUBLIC_API(2,0) Zlib_Compression final : public Stream_Compression 20 { 21 public: name()22 std::string name() const override { return "Zlib_Compression"; } 23 private: 24 Compression_Stream* make_stream(size_t level) const override; 25 }; 26 27 /** 28 * Zlib Decompression 29 */ 30 class BOTAN_PUBLIC_API(2,0) Zlib_Decompression final : public Stream_Decompression 31 { 32 public: name()33 std::string name() const override { return "Zlib_Decompression"; } 34 private: 35 Compression_Stream* make_stream() const override; 36 }; 37 38 /** 39 * Deflate Compression 40 */ 41 class BOTAN_PUBLIC_API(2,0) Deflate_Compression final : public Stream_Compression 42 { 43 public: name()44 std::string name() const override { return "Deflate_Compression"; } 45 private: 46 Compression_Stream* make_stream(size_t level) const override; 47 }; 48 49 /** 50 * Deflate Decompression 51 */ 52 class BOTAN_PUBLIC_API(2,0) Deflate_Decompression final : public Stream_Decompression 53 { 54 public: name()55 std::string name() const override { return "Deflate_Decompression"; } 56 private: 57 Compression_Stream* make_stream() const override; 58 }; 59 60 /** 61 * Gzip Compression 62 */ 63 class BOTAN_PUBLIC_API(2,0) Gzip_Compression final : public Stream_Compression 64 { 65 public: 66 explicit Gzip_Compression(uint8_t os_code = 255, uint64_t hdr_time = 0) : m_hdr_time(hdr_time)67 m_hdr_time(hdr_time), m_os_code(os_code) {} 68 name()69 std::string name() const override { return "Gzip_Compression"; } 70 private: 71 Compression_Stream* make_stream(size_t level) const override; 72 const uint64_t m_hdr_time; 73 const uint8_t m_os_code; 74 }; 75 76 /** 77 * Gzip Decompression 78 */ 79 class BOTAN_PUBLIC_API(2,0) Gzip_Decompression final : public Stream_Decompression 80 { 81 public: name()82 std::string name() const override { return "Gzip_Decompression"; } 83 private: 84 Compression_Stream* make_stream() const override; 85 }; 86 87 } 88 89 #endif 90