diff options
author | Kevin Smith <git@kismith.co.uk> | 2012-02-22 11:00:19 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2012-02-28 16:02:29 (GMT) |
commit | 0e4f068273ecaa2be24a046812893698a06481bc (patch) | |
tree | 9c3b7dbd3609a866c2123ea0c5a539b5c49d67dd /Swiften/StringCodecs/SHA1.h | |
parent | eca0f020873f7620c5125101113e2c1eb25b273e (diff) | |
download | swift-contrib-0e4f068273ecaa2be24a046812893698a06481bc.zip swift-contrib-0e4f068273ecaa2be24a046812893698a06481bc.tar.bz2 |
Make Swift more usable in a FIPS-140 environment
Don't allow DIGEST-MD5 when Windows is set to FIPS mode. Use
platform-provided hashing for SHA1.
Diffstat (limited to 'Swiften/StringCodecs/SHA1.h')
-rw-r--r-- | Swiften/StringCodecs/SHA1.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Swiften/StringCodecs/SHA1.h b/Swiften/StringCodecs/SHA1.h index 19488cb..9edcbb2 100644 --- a/Swiften/StringCodecs/SHA1.h +++ b/Swiften/StringCodecs/SHA1.h @@ -1,55 +1,61 @@ /* - * Copyright (c) 2010 Remko Tronçon + * Copyright (c) 2010-2012 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once +#ifdef SWIFTEN_PLATFORM_WIN32 +#include "SHA1_Windows.h" +#else + #include <vector> #include <boost/cstdint.hpp> #include <Swiften/Base/ByteArray.h> #include <Swiften/Base/SafeByteArray.h> namespace Swift { class SHA1 { public: SHA1(); SHA1& update(const std::vector<unsigned char>& data); std::vector<unsigned char> getHash() const; /** * Equivalent of: * SHA1().update(data),getHash(), but slightly more efficient and * convenient. */ static ByteArray getHash(const ByteArray& data); static ByteArray getHash(const SafeByteArray& data); ByteArray operator()(const SafeByteArray& data) { return getHash(data); } ByteArray operator()(const ByteArray& data) { return getHash(data); } private: typedef struct { boost::uint32_t state[5]; boost::uint32_t count[2]; boost::uint8_t buffer[64]; } CTX; static void Init(CTX* context); static void Transform(boost::uint32_t state[5], boost::uint8_t buffer[64]); static void Update(CTX* context, boost::uint8_t* data, unsigned int len); static void Final(boost::uint8_t digest[20], CTX* context); template<typename Container> static ByteArray getHashInternal(const Container& input); private: CTX context; }; } + +#endif |