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