summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2011-08-12 17:29:21 (GMT)
committerRemko Tronçon <git@el-tramo.be>2011-08-12 17:32:17 (GMT)
commitc6ffcd27e94d2f90fd4a3bcb5d2d3c6550ead59c (patch)
tree5968399a0d1ae73c1f197630bef3a0960e8525b5 /Swiften/StringCodecs/HMACSHA1.cpp
parent08cfaa06859238449d6848df4e170ffb6dc605d3 (diff)
downloadswift-c6ffcd27e94d2f90fd4a3bcb5d2d3c6550ead59c.zip
swift-c6ffcd27e94d2f90fd4a3bcb5d2d3c6550ead59c.tar.bz2
Refactored stringcodec functions to make them independent of hash algos.
Diffstat (limited to 'Swiften/StringCodecs/HMACSHA1.cpp')
-rw-r--r--Swiften/StringCodecs/HMACSHA1.cpp95
1 files changed, 0 insertions, 95 deletions
diff --git a/Swiften/StringCodecs/HMACSHA1.cpp b/Swiften/StringCodecs/HMACSHA1.cpp
deleted file mode 100644
index fd951ae..0000000
--- a/Swiften/StringCodecs/HMACSHA1.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2010 Remko Tronçon
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#include <Swiften/StringCodecs/HMACSHA1.h>
-
-#include <cassert>
-
-#include <Swiften/StringCodecs/SHA1.h>
-#include <Swiften/Base/Algorithm.h>
-
-using namespace Swift;
-
-namespace {
- static const unsigned int B = 64;
-
- template<typename SourceType>
- ByteArray getHMACSHA1(const SourceType& key, const ByteArray& data) {
- assert(key.size() <= B);
-
- // Create the padded key
- SourceType paddedKey(key);
- paddedKey.resize(B, 0x0);
-
- // Create the first value
- SourceType x(paddedKey);
- for (unsigned int i = 0; i < x.size(); ++i) {
- x[i] ^= 0x36;
- }
- append(x, data);
-
- // Create the second value
- SourceType y(paddedKey);
- for (unsigned int i = 0; i < y.size(); ++i) {
- y[i] ^= 0x5c;
- }
- append(y, SHA1::getHash(x));
-
- return SHA1::getHash(y);
- }
-}
-
-namespace Swift {
-
-ByteArray HMACSHA1::getResult(const SafeByteArray& key, const ByteArray& data) {
- return getHMACSHA1(key, data);
-}
-
-ByteArray HMACSHA1::getResult(const ByteArray& key, const ByteArray& data) {
- return getHMACSHA1(key, data);
-}
-
-
-
-#if 0
-
-// A tweaked version of HMACSHA1 that is more than twice as fast as the one above.
-// After this, more than 80% is spent in SHA1.
-// Optimizations:
-// - Avoids using ByteArray/std::vector
-// - Uses openssl's SHA1, which is slightly faster
-// - Does 'xor' on word basis
-// - Passes return value as a parameter
-
-#include <openssl/sha.h>
-
-void HMACSHA1::getResult(const ByteArray& key, const ByteArray& data, ByteArray& result) {
- // Create first value
- size_t xSize = B + data.size();
- unsigned char* x = (unsigned char*) malloc(xSize * sizeof(unsigned char));
- memset(x, 0, B);
- memcpy(x, key.getData(), key.size());
- for (unsigned int i = 0; i < (B>>32); ++i) {
- x[i<<32] ^= 0x36363636;
- }
- memcpy(x + B, data.getData(), data.size());
-
- // Create the second value
- unsigned char y[B + 20];
- memset(y, 0, B);
- memcpy(y, key.getData(), key.size());
- for (unsigned int i = 0; i < (B>>32); ++i) {
- y[i<<32] ^= 0x5c5c5c5c;
- }
- ::SHA1(x, xSize, y + B);
- free(x);
-
- ::SHA1(y, B + 20, (unsigned char*) result.getData());
-}
-
-#endif
-
-}