summaryrefslogtreecommitdiff
path: root/gzip.h
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2015-11-05 01:59:46 -0500
committerJeffrey Walton <noloader@gmail.com>2015-11-05 01:59:46 -0500
commit48809d4e85c125814425c621d8d0d89f95405924 (patch)
tree1010fd16c4b1199f3d27dd726dda241a2bd29f83 /gzip.h
parent025337a94aceb75d188149db70c2094673772816 (diff)
downloadcryptopp-git-48809d4e85c125814425c621d8d0d89f95405924.tar.gz
CRYPTOPP 5.6.3 RC6 checkin
Diffstat (limited to 'gzip.h')
-rw-r--r--gzip.h139
1 files changed, 74 insertions, 65 deletions
diff --git a/gzip.h b/gzip.h
index f3148ad7..01a4c960 100644
--- a/gzip.h
+++ b/gzip.h
@@ -1,65 +1,74 @@
-#ifndef CRYPTOPP_GZIP_H
-#define CRYPTOPP_GZIP_H
-
-#include "zdeflate.h"
-#include "zinflate.h"
-#include "crc.h"
-
-NAMESPACE_BEGIN(CryptoPP)
-
-/// GZIP Compression (RFC 1952)
-class Gzip : public Deflator
-{
-public:
- Gzip(BufferedTransformation *attachment=NULL, unsigned int deflateLevel=DEFAULT_DEFLATE_LEVEL, unsigned int log2WindowSize=DEFAULT_LOG2_WINDOW_SIZE, bool detectUncompressible=true)
- : Deflator(attachment, deflateLevel, log2WindowSize, detectUncompressible) {}
- Gzip(const NameValuePairs &parameters, BufferedTransformation *attachment=NULL)
- : Deflator(parameters, attachment) {}
-
-protected:
- enum {MAGIC1=0x1f, MAGIC2=0x8b, // flags for the header
- DEFLATED=8, FAST=4, SLOW=2};
-
- void WritePrestreamHeader();
- void ProcessUncompressedData(const byte *string, size_t length);
- void WritePoststreamTail();
-
- word32 m_totalLen;
- CRC32 m_crc;
-};
-
-/// GZIP Decompression (RFC 1952)
-class Gunzip : public Inflator
-{
-public:
- typedef Inflator::Err Err;
- class HeaderErr : public Err {public: HeaderErr() : Err(INVALID_DATA_FORMAT, "Gunzip: header decoding error") {}};
- class TailErr : public Err {public: TailErr() : Err(INVALID_DATA_FORMAT, "Gunzip: tail too short") {}};
- class CrcErr : public Err {public: CrcErr() : Err(DATA_INTEGRITY_CHECK_FAILED, "Gunzip: CRC check error") {}};
- class LengthErr : public Err {public: LengthErr() : Err(DATA_INTEGRITY_CHECK_FAILED, "Gunzip: length check error") {}};
-
- /*! \param repeat decompress multiple compressed streams in series
- \param autoSignalPropagation 0 to turn off MessageEnd signal
- */
- Gunzip(BufferedTransformation *attachment = NULL, bool repeat = false, int autoSignalPropagation = -1);
-
-protected:
- enum {MAGIC1=0x1f, MAGIC2=0x8b, // flags for the header
- DEFLATED=8};
-
- enum FLAG_MASKS {
- CONTINUED=2, EXTRA_FIELDS=4, FILENAME=8, COMMENTS=16, ENCRYPTED=32};
-
- unsigned int MaxPrestreamHeaderSize() const {return 1024;}
- void ProcessPrestreamHeader();
- void ProcessDecompressedData(const byte *string, size_t length);
- unsigned int MaxPoststreamTailSize() const {return 8;}
- void ProcessPoststreamTail();
-
- word32 m_length;
- CRC32 m_crc;
-};
-
-NAMESPACE_END
-
-#endif
+#ifndef CRYPTOPP_GZIP_H
+#define CRYPTOPP_GZIP_H
+
+#include "cryptlib.h"
+#include "zdeflate.h"
+#include "zinflate.h"
+#include "crc.h"
+
+NAMESPACE_BEGIN(CryptoPP)
+
+/// GZIP Compression (RFC 1952)
+class Gzip : public Deflator
+{
+public:
+ Gzip(BufferedTransformation *attachment=NULL, unsigned int deflateLevel=DEFAULT_DEFLATE_LEVEL, unsigned int log2WindowSize=DEFAULT_LOG2_WINDOW_SIZE, bool detectUncompressible=true)
+ : Deflator(attachment, deflateLevel, log2WindowSize, detectUncompressible) {}
+ Gzip(const NameValuePairs &parameters, BufferedTransformation *attachment=NULL)
+ : Deflator(parameters, attachment) {}
+
+protected:
+ enum {MAGIC1=0x1f, MAGIC2=0x8b, // flags for the header
+ DEFLATED=8, FAST=4, SLOW=2};
+
+ void WritePrestreamHeader();
+ void ProcessUncompressedData(const byte *string, size_t length);
+ void WritePoststreamTail();
+
+ word32 m_totalLen;
+ CRC32 m_crc;
+};
+
+//! \class Gunzip
+//! \brief GZIP Decompression (RFC 1952)
+class Gunzip : public Inflator
+{
+public:
+ typedef Inflator::Err Err;
+ class HeaderErr : public Err {public: HeaderErr() : Err(INVALID_DATA_FORMAT, "Gunzip: header decoding error") {}};
+ class TailErr : public Err {public: TailErr() : Err(INVALID_DATA_FORMAT, "Gunzip: tail too short") {}};
+ class CrcErr : public Err {public: CrcErr() : Err(DATA_INTEGRITY_CHECK_FAILED, "Gunzip: CRC check error") {}};
+ class LengthErr : public Err {public: LengthErr() : Err(DATA_INTEGRITY_CHECK_FAILED, "Gunzip: length check error") {}};
+
+ //! \brief Construct a Gunzip
+ //! \param attachment a \ BufferedTransformation to attach to this object
+ //! \param repeat decompress multiple compressed streams in series
+ //! \param autoSignalPropagation 0 to turn off MessageEnd signal
+ Gunzip(BufferedTransformation *attachment = NULL, bool repeat = false, int autoSignalPropagation = -1);
+
+protected:
+ enum {
+ //! \brief First header magic value
+ MAGIC1=0x1f,
+ //! \brief Second header magic value
+ MAGIC2=0x8b,
+ //! \brief Deflated flag
+ DEFLATED=8
+ };
+
+ enum FLAG_MASKS {
+ CONTINUED=2, EXTRA_FIELDS=4, FILENAME=8, COMMENTS=16, ENCRYPTED=32};
+
+ unsigned int MaxPrestreamHeaderSize() const {return 1024;}
+ void ProcessPrestreamHeader();
+ void ProcessDecompressedData(const byte *string, size_t length);
+ unsigned int MaxPoststreamTailSize() const {return 8;}
+ void ProcessPoststreamTail();
+
+ word32 m_length;
+ CRC32 m_crc;
+};
+
+NAMESPACE_END
+
+#endif