summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2012-02-22 11:00:19 (GMT)
committerKevin Smith <git@kismith.co.uk>2012-02-28 16:02:29 (GMT)
commit0e4f068273ecaa2be24a046812893698a06481bc (patch)
tree9c3b7dbd3609a866c2123ea0c5a539b5c49d67dd /Swiften/StringCodecs/MD5.cpp
parenteca0f020873f7620c5125101113e2c1eb25b273e (diff)
downloadswift-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/MD5.cpp')
-rw-r--r--Swiften/StringCodecs/MD5.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/Swiften/StringCodecs/MD5.cpp b/Swiften/StringCodecs/MD5.cpp
index 6871f79..bd03314 100644
--- a/Swiften/StringCodecs/MD5.cpp
+++ b/Swiften/StringCodecs/MD5.cpp
@@ -1,11 +1,11 @@
/*
- * 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.
*/
/*
* This implementation is shamelessly copied from L. Peter Deutsch's
* implementation, and altered to use our own defines and datastructures.
* Original license below.
*//*
@@ -35,18 +35,22 @@
#include <Swiften/StringCodecs/MD5.h>
#include <cassert>
#include <string.h>
#include <Swiften/Base/ByteArray.h>
#include <Swiften/Base/Platform.h>
+#ifdef SWIFTEN_PLATFORM_WIN32
+#include <Swiften/Base/WindowsRegistry.h>
+#endif
+
namespace Swift {
typedef unsigned char md5_byte_t; /* 8-bit byte */
typedef unsigned int md5_word_t; /* 32-bit word */
/* Define the state of the MD5 Algorithm. */
typedef struct md5_state_s {
md5_word_t count[2]; /* message length in bits, lsw first */
md5_word_t abcd[4]; /* digest buffer */
@@ -389,10 +393,18 @@ std::vector<unsigned char> MD5::getHash() {
ByteArray MD5::getHash(const ByteArray& data) {
return getMD5Hash(data);
}
ByteArray MD5::getHash(const SafeByteArray& data) {
return getMD5Hash(data);
}
+bool MD5::isAllowedForCrypto() {
+#ifdef SWIFTEN_PLATFORM_WIN32
+ return !WindowsRegistry::isFIPSEnabled();
+#else
+ return true;
+#endif
+}
+
}