CryptoChecksum.h

00001 // $Id: CryptoChecksum.h 21 2010-09-05 04:18:17Z cschwarz1 $
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