00001
00002
00003 #ifndef BASE_CRYPTO_CRYPTOCHECKSUM_H
00004 #define BASE_CRYPTO_CRYPTOCHECKSUM_H
00005
00006 #include <openssl/objects.h>
00007 #include <openssl/sha.h>
00008 #include "libppbase/base/String.h"
00009
00011 namespace base_crypto {
00018 class PPBASE_CRYPTO_EXPORT CryptoChecksum {
00019 public:
00021 enum checksumMethod {
00022 checksumUndef = NID_undef,
00023 checksumMD5 = NID_md5,
00024 checksumRIPEMD160 = NID_ripemd160,
00025 checksumSHA1 = NID_sha1
00026 };
00027
00029 virtual ~CryptoChecksum();
00030
00037 static CryptoChecksum *create(checksumMethod method);
00038
00045 static CryptoChecksum *create(const char *name);
00046
00052 base::String final();
00053
00059 virtual void final(unsigned char *buf) = 0;
00060
00067 static checksumMethod getMethodByName(const char *name);
00068
00074 virtual checksumMethod getMethodId() const = 0;
00075
00081 virtual const char *getMethodName() const = 0;
00082
00088 virtual unsigned getSize() const = 0;
00089
00091 virtual void init() = 0;
00092
00099 virtual void update(const void *data, size_t len) = 0;
00100
00106 void update(const base::String &data);
00107
00113 void update1(const base::String &data);
00114 };
00115 }
00116
00117 #endif