mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-16 17:45:09 +00:00
49 lines
1.4 KiB
C++
49 lines
1.4 KiB
C++
#ifndef PL_MD5_HH
|
|
#define PL_MD5_HH
|
|
|
|
// This pipeline sends its output to its successor unmodified. After
|
|
// calling finish, the MD5 checksum of the data that passed through
|
|
// the pipeline is available.
|
|
|
|
// This pipeline is reusable; i.e., it is safe to call write() after
|
|
// calling finish(). The first call to write() after a call to
|
|
// finish() initializes a new MD5 object.
|
|
|
|
#include <qpdf/Pipeline.hh>
|
|
#include <qpdf/MD5.hh>
|
|
|
|
class Pl_MD5: public Pipeline
|
|
{
|
|
public:
|
|
QPDF_DLL
|
|
Pl_MD5(char const* identifier, Pipeline* next);
|
|
QPDF_DLL
|
|
virtual ~Pl_MD5();
|
|
QPDF_DLL
|
|
virtual void write(unsigned char*, size_t);
|
|
QPDF_DLL
|
|
virtual void finish();
|
|
QPDF_DLL
|
|
std::string getHexDigest();
|
|
// Enable/disable. Disabling the pipeline causes it to become a
|
|
// pass-through. This makes it possible to stick an MD5 pipeline
|
|
// in a pipeline when it may or may not be required. Disabling it
|
|
// avoids incurring the runtime overhead of doing needless
|
|
// digest computation.
|
|
QPDF_DLL
|
|
void enable(bool enabled);
|
|
// If persistAcrossFinish is called, calls to finish do not
|
|
// finalize the underlying md5 object. In this case, the object is
|
|
// not finalized until getHexDigest() is called.
|
|
QPDF_DLL
|
|
void persistAcrossFinish(bool);
|
|
|
|
private:
|
|
bool in_progress;
|
|
MD5 md5;
|
|
bool enabled;
|
|
bool persist_across_finish;
|
|
};
|
|
|
|
#endif // PL_MD5_HH
|