| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*============================================================================
- CMake - Cross Platform Makefile Generator
- Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
- Distributed under the OSI-approved BSD License (the "License");
- see accompanying file Copyright.txt for details.
- This software is distributed WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License for more information.
- ============================================================================*/
- #ifndef cmCryptoHash_h
- #define cmCryptoHash_h
- #include "cmStandardIncludes.h"
- #include <cmsys/auto_ptr.hxx>
- class cmCryptoHash
- {
- public:
- static cmsys::auto_ptr<cmCryptoHash> New(const char* algo);
- std::string HashString(const char* input);
- std::string HashFile(const char* file);
- protected:
- virtual void Initialize()=0;
- virtual void Append(unsigned char const*, int)=0;
- virtual std::string Finalize()=0;
- };
- class cmCryptoHashMD5: public cmCryptoHash
- {
- struct cmsysMD5_s* MD5;
- public:
- cmCryptoHashMD5();
- ~cmCryptoHashMD5();
- protected:
- virtual void Initialize();
- virtual void Append(unsigned char const* buf, int sz);
- virtual std::string Finalize();
- };
- #define cmCryptoHash_SHA_CLASS_DECL(SHA) \
- class cmCryptoHash##SHA: public cmCryptoHash \
- { \
- union _SHA_CTX* SHA; \
- public: \
- cmCryptoHash##SHA(); \
- ~cmCryptoHash##SHA(); \
- protected: \
- virtual void Initialize(); \
- virtual void Append(unsigned char const* buf, int sz); \
- virtual std::string Finalize(); \
- }
- cmCryptoHash_SHA_CLASS_DECL(SHA1);
- cmCryptoHash_SHA_CLASS_DECL(SHA224);
- cmCryptoHash_SHA_CLASS_DECL(SHA256);
- cmCryptoHash_SHA_CLASS_DECL(SHA384);
- cmCryptoHash_SHA_CLASS_DECL(SHA512);
- #undef cmCryptoHash_SHA_CLASS_DECL
- #endif
|