#ifndef CRYPTOPP_SHA_H #define CRYPTOPP_SHA_H #include "iterhash.h" NAMESPACE_BEGIN(CryptoPP) /// SHA-1 class SHA : public IteratedHashWithStaticTransform { public: enum {DIGESTSIZE = 20}; SHA() : IteratedHashWithStaticTransform(DIGESTSIZE) {Init();} static void Transform(word32 *digest, const word32 *data); static const char *StaticAlgorithmName() {return "SHA-1";} protected: void Init(); }; typedef SHA SHA1; //! implements the SHA-256 standard class SHA256 : public IteratedHashWithStaticTransform { public: enum {DIGESTSIZE = 32}; SHA256() : IteratedHashWithStaticTransform(DIGESTSIZE) {Init();} static void Transform(word32 *digest, const word32 *data); static const char *StaticAlgorithmName() {return "SHA-256";} protected: void Init(); static const word32 K[64]; }; #ifdef WORD64_AVAILABLE //! implements the SHA-512 standard class SHA512 : public IteratedHashWithStaticTransform { public: enum {DIGESTSIZE = 64}; SHA512() : IteratedHashWithStaticTransform(DIGESTSIZE) {Init();} static void Transform(word64 *digest, const word64 *data); static const char *StaticAlgorithmName() {return "SHA-512";} protected: void Init(); static const word64 K[80]; }; //! implements the SHA-384 standard class SHA384 : public IteratedHashWithStaticTransform { public: enum {DIGESTSIZE = 48}; SHA384() : IteratedHashWithStaticTransform(64) {Init();} unsigned int DigestSize() const {return DIGESTSIZE;}; static const char *StaticAlgorithmName() {return "SHA-384";} protected: void Init(); }; #endif NAMESPACE_END #endif