aboutsummaryrefslogtreecommitdiffstats
path: root/src/vmime/security/digest/md5/md5MessageDigest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vmime/security/digest/md5/md5MessageDigest.cpp')
-rw-r--r--src/vmime/security/digest/md5/md5MessageDigest.cpp102
1 files changed, 52 insertions, 50 deletions
diff --git a/src/vmime/security/digest/md5/md5MessageDigest.cpp b/src/vmime/security/digest/md5/md5MessageDigest.cpp
index a83f0623..9a07b57b 100644
--- a/src/vmime/security/digest/md5/md5MessageDigest.cpp
+++ b/src/vmime/security/digest/md5/md5MessageDigest.cpp
@@ -1,6 +1,6 @@
//
// VMime library (http://www.vmime.org)
-// Copyright (C) 2002-2013 Vincent Richard <[email protected]>
+// Copyright (C) 2002 Vincent Richard <[email protected]>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
@@ -59,20 +59,20 @@ namespace digest {
namespace md5 {
-md5MessageDigest::md5MessageDigest()
-{
+md5MessageDigest::md5MessageDigest() {
+
init();
}
-void md5MessageDigest::reset()
-{
+void md5MessageDigest::reset() {
+
init();
}
-void md5MessageDigest::init()
-{
+void md5MessageDigest::init() {
+
m_hash[0] = 0x67452301;
m_hash[1] = 0xefcdab89;
m_hash[2] = 0x98badcfe;
@@ -83,69 +83,68 @@ void md5MessageDigest::init()
}
-static void copyUint8Array(vmime_uint8* dest, const vmime_uint8* src, size_t count)
-{
- for ( ; count >= 4 ; count -= 4, dest += 4, src += 4)
- {
+static void copyUint8Array(vmime_uint8* dest, const vmime_uint8* src, size_t count) {
+
+ for ( ; count >= 4 ; count -= 4, dest += 4, src += 4) {
dest[0] = src[0];
dest[1] = src[1];
dest[2] = src[2];
dest[3] = src[3];
}
- for ( ; count ; --count, ++dest, ++src)
+ for ( ; count ; --count, ++dest, ++src) {
dest[0] = src[0];
+ }
}
-static inline vmime_uint32 swapUint32(const vmime_uint32 D)
-{
+static inline vmime_uint32 swapUint32(const vmime_uint32 D) {
+
return ((D << 24) | ((D << 8) & 0x00FF0000) | ((D >> 8) & 0x0000FF00) | (D >> 24));
}
-static inline void swapUint32Array(vmime_uint32* buf, size_t words)
-{
- for ( ; words >= 4 ; words -= 4, buf += 4)
- {
+static inline void swapUint32Array(vmime_uint32* buf, size_t words) {
+
+ for ( ; words >= 4 ; words -= 4, buf += 4) {
buf[0] = swapUint32(buf[0]);
buf[1] = swapUint32(buf[1]);
buf[2] = swapUint32(buf[2]);
buf[3] = swapUint32(buf[3]);
}
- for ( ; words ; --words, ++buf)
+ for ( ; words ; --words, ++buf) {
buf[0] = swapUint32(buf[0]);
+ }
}
-void md5MessageDigest::update(const byte_t b)
-{
+void md5MessageDigest::update(const byte_t b) {
+
update(&b, 1);
}
-void md5MessageDigest::update(const string& s)
-{
+void md5MessageDigest::update(const string& s) {
+
update(reinterpret_cast <const byte_t*>(s.data()), s.length());
}
-void md5MessageDigest::update(const byte_t* data, const size_t offset, const size_t len)
-{
+void md5MessageDigest::update(const byte_t* data, const size_t offset, const size_t len) {
+
update(data + offset, len);
}
-void md5MessageDigest::update(const byte_t* data, const size_t length)
-{
+void md5MessageDigest::update(const byte_t* data, const size_t length) {
+
const size_t avail = 64 - (m_byteCount & 0x3f);
size_t len = length;
m_byteCount += len;
- if (avail > len)
- {
+ if (avail > len) {
copyUint8Array(m_block.b8 + (64 - avail), data, len);
return;
}
@@ -156,8 +155,8 @@ void md5MessageDigest::update(const byte_t* data, const size_t length)
data += avail;
len -= avail;
- while (len >= 64)
- {
+ while (len >= 64) {
+
copyUint8Array(m_block.b8, data, 64);
transformHelper();
@@ -169,30 +168,33 @@ void md5MessageDigest::update(const byte_t* data, const size_t length)
}
-void md5MessageDigest::finalize(const string& s)
-{
+void md5MessageDigest::finalize(const string& s) {
+
update(s);
finalize();
}
-void md5MessageDigest::finalize(const byte_t* buffer, const size_t len)
-{
+void md5MessageDigest::finalize(const byte_t* buffer, const size_t len) {
+
update(buffer, len);
finalize();
}
-void md5MessageDigest::finalize(const byte_t* buffer,
- const size_t offset, const size_t len)
-{
+void md5MessageDigest::finalize(
+ const byte_t* buffer,
+ const size_t offset,
+ const size_t len
+) {
+
update(buffer, offset, len);
finalize();
}
-void md5MessageDigest::finalize()
-{
+void md5MessageDigest::finalize() {
+
const long offset = m_byteCount & 0x3f;
vmime_uint8* p = m_block.b8 + offset;
@@ -200,8 +202,8 @@ void md5MessageDigest::finalize()
*p++ = 0x80;
- if (padding < 0)
- {
+ if (padding < 0) {
+
memset(p, 0x00, padding + 8);
transformHelper();
p = m_block.b8;
@@ -227,8 +229,8 @@ void md5MessageDigest::finalize()
}
-void md5MessageDigest::transformHelper()
-{
+void md5MessageDigest::transformHelper() {
+
#if VMIME_BYTE_ORDER_BIG_ENDIAN
swapUint32Array(m_block.b32, 64 / 4);
#endif
@@ -236,8 +238,8 @@ void md5MessageDigest::transformHelper()
}
-void md5MessageDigest::transform()
-{
+void md5MessageDigest::transform() {
+
const vmime_uint32* const in = m_block.b32;
vmime_uint32 a = m_hash[0];
@@ -328,14 +330,14 @@ void md5MessageDigest::transform()
}
-size_t md5MessageDigest::getDigestLength() const
-{
+size_t md5MessageDigest::getDigestLength() const {
+
return 16;
}
-const byte_t* md5MessageDigest::getDigest() const
-{
+const byte_t* md5MessageDigest::getDigest() const {
+
return reinterpret_cast <const byte_t*>(m_hash);
}