00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _pmd5_h_
00021 #define _pmd5_h_
00022
00023 #include <pclasses/pexport.h>
00024 #include <pclasses/pdigest.h>
00025 #include <pclasses/ptypes.h>
00026
00027 namespace P {
00028
00030
00034 class PCRYPTO_EXPORT MD5Digest: public Digest {
00035 public:
00036 enum {
00037 DIGEST_SIZE = 16,
00038 BLOCK_SIZE = 64,
00039 BLOCK_WORDS = 16,
00040 HASH_WORDS = 4
00041 };
00042
00043 MD5Digest();
00044 MD5Digest(const MD5Digest& dig);
00045 ~MD5Digest();
00046
00047 virtual void update(const char* buff, size_t len);
00048 virtual std::string digest() const;
00049 virtual void clear();
00050
00051 MD5Digest& operator=(const MD5Digest& dig);
00052
00053 private:
00054 void init();
00055 void transform(const uint32_t* buffer);
00056
00057 uint64_t m_byteCount;
00058 uint32_t m_hash[HASH_WORDS];
00059 uint32_t m_block[BLOCK_WORDS];
00060 };
00061
00062 }
00063
00064 #endif