diff options
Diffstat (limited to 'libqpdf/qpdf/MD5_native.hh')
-rw-r--r-- | libqpdf/qpdf/MD5_native.hh | 92 |
1 files changed, 15 insertions, 77 deletions
diff --git a/libqpdf/qpdf/MD5_native.hh b/libqpdf/qpdf/MD5_native.hh index 02cdb3cf..d7e65a50 100644 --- a/libqpdf/qpdf/MD5_native.hh +++ b/libqpdf/qpdf/MD5_native.hh @@ -1,94 +1,32 @@ -#ifndef MD5_HH -#define MD5_HH +#ifndef MD5_NATIVE_HH +#define MD5_NATIVE_HH -#include <qpdf/DLL.h> #include <qpdf/qpdf-config.h> -#include <qpdf/Types.h> -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#include <string> +#include <cstdint> +#include <cstring> -class MD5 +class MD5_native { public: typedef unsigned char Digest[16]; - QPDF_DLL - MD5(); - QPDF_DLL - void reset(); - - // encodes string and finalizes - QPDF_DLL - void encodeString(char const* input_string); - - // encodes file and finalizes; offset < 0 reads whole file - QPDF_DLL - void encodeFile(char const* filename, qpdf_offset_t up_to_offset = -1); - - // appends string to current md5 object - QPDF_DLL - void appendString(char const* input_string); - - // appends arbitrary data to current md5 object - QPDF_DLL - void encodeDataIncrementally(char const* input_data, size_t len); - - // computes a raw digest - QPDF_DLL - void digest(Digest); - - // prints the digest to stdout terminated with \r\n (primarily for - // testing) - QPDF_DLL - void print(); - - // returns the digest as a hexadecimal string - QPDF_DLL - std::string unparse(); - - // Convenience functions - QPDF_DLL - static std::string getDataChecksum(char const* buf, size_t len); - QPDF_DLL - static std::string getFileChecksum(char const* filename, - qpdf_offset_t up_to_offset = -1); - QPDF_DLL - static bool checkDataChecksum(char const* const checksum, - char const* buf, size_t len); - QPDF_DLL - static bool checkFileChecksum(char const* const checksum, - char const* filename, - qpdf_offset_t up_to_offset = -1); - - private: - // POINTER defines a generic pointer type - typedef void *POINTER; - - // UINT2 defines a two byte word - typedef uint16_t UINT2; - - // UINT4 defines a four byte word - typedef uint32_t UINT4; - + MD5_native(); void init(); void update(unsigned char *, size_t); - void final(); + void finalize(); + void digest(Digest); - static void transform(UINT4 [4], unsigned char [64]); - static void encode(unsigned char *, UINT4 *, size_t); - static void decode(UINT4 *, unsigned char *, size_t); + private: + static void transform(uint32_t[4], unsigned char[64]); + static void encode(unsigned char *, uint32_t *, size_t); + static void decode(uint32_t *, unsigned char *, size_t); - UINT4 state[4]; // state (ABCD) - UINT4 count[2]; // number of bits, modulo 2^64 (lsb first) + uint32_t state[4]; // state (ABCD) + uint32_t count[2]; // number of bits, modulo 2^64 (lsb first) unsigned char buffer[64]; // input buffer bool finalized; Digest digest_val; }; -#endif // MD5_HH +#endif // MD5_NATIVE_HH |