aboutsummaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/net/authHelper.cpp30
-rw-r--r--src/net/pop3/POP3Store.cpp11
2 files changed, 26 insertions, 15 deletions
diff --git a/src/net/authHelper.cpp b/src/net/authHelper.cpp
index e10b47ee..a946e6f1 100644
--- a/src/net/authHelper.cpp
+++ b/src/net/authHelper.cpp
@@ -20,7 +20,7 @@
#include "vmime/net/authHelper.hpp"
#include "vmime/config.hpp"
-#include "vmime/utility/md5.hpp"
+#include "vmime/security/digest/messageDigestFactory.hpp"
namespace vmime {
@@ -42,13 +42,17 @@ void hmac_md5(const string& text, const string& key, string& hexDigest)
unsigned char tkey[16];
int tkeyLen;
+ ref <security::digest::messageDigest> md5 =
+ security::digest::messageDigestFactory::getInstance()->create("md5");
+
// If key is longer than 64 bytes reset it to key = MD5(key)
if (key.length() > 64)
{
- utility::md5 keyMD5;
- keyMD5.update(reinterpret_cast <const vmime_uint8*>(key.data()), key.length());
+ md5->reset();
+ md5->update(reinterpret_cast <const vmime_uint8*>(key.data()), key.length());
+ md5->finalize();
- std::copy(keyMD5.hash(), keyMD5.hash() + 16, tkey);
+ std::copy(md5->getDigest(), md5->getDigest() + 16, tkey);
tkeyLen = 16;
}
else
@@ -84,20 +88,22 @@ void hmac_md5(const string& text, const string& key, string& hexDigest)
}
// Perform inner MD5
- utility::md5 innerMD5;
- innerMD5.update(ipad, 64);
- innerMD5.update(text);
+ md5->reset();
+ md5->update(ipad, 64);
+ md5->update(text);
+ md5->finalize();
- std::copy(innerMD5.hash(), innerMD5.hash() + 16, digest);
+ std::copy(md5->getDigest(), md5->getDigest() + 16, digest);
// Perform outer MD5
- utility::md5 outerMD5;
- outerMD5.update(opad, 64);
- outerMD5.update(digest, 16);
+ md5->reset();
+ md5->update(opad, 64);
+ md5->update(digest, 16);
+ md5->finalize();
//std::copy(outerMD5.hash(), outerMD5.hash() + 16, digest);
- hexDigest = outerMD5.hex();
+ hexDigest = md5->getHexDigest();
}
diff --git a/src/net/pop3/POP3Store.cpp b/src/net/pop3/POP3Store.cpp
index 9ccfa7b7..5041d2d3 100644
--- a/src/net/pop3/POP3Store.cpp
+++ b/src/net/pop3/POP3Store.cpp
@@ -23,7 +23,7 @@
#include "vmime/exception.hpp"
#include "vmime/platformDependant.hpp"
#include "vmime/messageId.hpp"
-#include "vmime/utility/md5.hpp"
+#include "vmime/security/digest/messageDigestFactory.hpp"
#include "vmime/utility/filteredStream.hpp"
#include <algorithm>
@@ -145,8 +145,13 @@ void POP3Store::connect()
if (mid.getLeft().length() && mid.getRight().length())
{
// <digest> is the result of MD5 applied to "<message-id>password"
- sendRequest("APOP " + auth.getUsername() + " "
- + utility::md5(mid.generate() + auth.getPassword()).hex());
+ ref <security::digest::messageDigest> md5 =
+ security::digest::messageDigestFactory::getInstance()->create("md5");
+
+ md5->update(mid.generate() + auth.getPassword());
+ md5->finalize();
+
+ sendRequest("APOP " + auth.getUsername() + " " + md5->getHexDigest());
readResponse(response, false);
if (isSuccessResponse(response))