00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _psha1_h_
00021 #define _psha1_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 SHA1Digest: public Digest {
00035 public:
00036 enum {
00037 DIGEST_SIZE = 20,
00038 BLOCK_SIZE = 64
00039 };
00040
00041 SHA1Digest();
00042 SHA1Digest(const SHA1Digest& dig);
00043 ~SHA1Digest();
00044
00045 virtual void update(const char* buff, size_t len);
00046 virtual std::string digest() const;
00047 virtual void clear();
00048
00049 SHA1Digest& operator=(const SHA1Digest& dig);
00050
00051 private:
00052 void init();
00053 void transform(const uint8_t* buffer);
00054
00055 uint64_t m_byteCount;
00056 uint32_t m_state[5];
00057 uint8_t m_block[64];
00058 };
00059
00060 }
00061
00062 #endif