Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

sha.h

00001 #ifndef CRYPTOPP_SHA_H
00002 #define CRYPTOPP_SHA_H
00003 
00004 #include "iterhash.h"
00005 
00006 NAMESPACE_BEGIN(CryptoPP)
00007 
00009 class SHA : public IteratedHash<word32, true, 64>
00010 {
00011 public:
00012         enum {DIGESTSIZE = 20};
00013         SHA() : IteratedHash<word32, true, 64>(DIGESTSIZE) {Init();}
00014         static void Transform(word32 *digest, const word32 *data);
00015 
00016 protected:
00017         void Init();
00018         void vTransform(const word32 *data) {Transform(digest, data);}
00019 };
00020 
00021 typedef SHA SHA1;
00022 
00024 class SHA256 : public IteratedHash<word32, true, 64>
00025 {
00026 public:
00027         enum {DIGESTSIZE = 32};
00028         SHA256() : IteratedHash<word32, true, 64>(DIGESTSIZE) {Init();}
00029         static void Transform(word32 *digest, const word32 *data);
00030 
00031 protected:
00032         void Init();
00033         void vTransform(const word32 *data) {Transform(digest, data);}
00034 
00035         const static word32 K[64];
00036 };
00037 
00038 #ifdef WORD64_AVAILABLE
00039 
00041 class SHA512 : public IteratedHash<word64, true, 128>
00042 {
00043 public:
00044         enum {DIGESTSIZE = 64};
00045         SHA512() : IteratedHash<word64, true, 128>(DIGESTSIZE) {Init();}
00046         static void Transform(word64 *digest, const word64 *data);
00047 
00048 protected:
00049         void Init();
00050         void vTransform(const word64 *data) {Transform(digest, data);}
00051 
00052         const static word64 K[80];
00053 };
00054 
00056 class SHA384 : public IteratedHash<word64, true, 128>
00057 {
00058 public:
00059         enum {DIGESTSIZE = 48};
00060         SHA384() : IteratedHash<word64, true, 128>(64) {Init();}
00061         unsigned int DigestSize() const {return DIGESTSIZE;};
00062 
00063 protected:
00064         void Init();
00065         void vTransform(const word64 *data) {SHA512::Transform(digest, data);}
00066 };
00067 
00068 #endif
00069 
00070 NAMESPACE_END
00071 
00072 #endif

Generated at Mon Jan 15 01:16:36 2001 for Crypto++ by doxygen1.2.4 written by Dimitri van Heesch, © 1997-2000