aboutsummaryrefslogtreecommitdiff
path: root/dep/CascLib/src/md5/md5.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dep/CascLib/src/md5/md5.cpp')
-rw-r--r--dep/CascLib/src/md5/md5.cpp86
1 files changed, 43 insertions, 43 deletions
diff --git a/dep/CascLib/src/md5/md5.cpp b/dep/CascLib/src/md5/md5.cpp
index b6cc49db42b..688269953a0 100644
--- a/dep/CascLib/src/md5/md5.cpp
+++ b/dep/CascLib/src/md5/md5.cpp
@@ -36,11 +36,11 @@
*/
#ifndef HAVE_OPENSSL
-
+
#include <string.h>
-
+
#include "md5.h"
-
+
/*
* The basic MD5 functions.
*
@@ -53,7 +53,7 @@
#define H(x, y, z) (((x) ^ (y)) ^ (z))
#define H2(x, y, z) ((x) ^ ((y) ^ (z)))
#define I(x, y, z) ((y) ^ ((x) | ~(z)))
-
+
/*
* The MD5 transformation for all four rounds.
*/
@@ -61,7 +61,7 @@
(a) += f((b), (c), (d)) + (x) + (t); \
(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
(a) += (b);
-
+
/*
* SET reads 4 input bytes in little-endian byte order and stores them in a
* properly aligned word in host byte order.
@@ -102,20 +102,20 @@ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
const unsigned char *ptr;
MD5_u32plus a, b, c, d;
MD5_u32plus saved_a, saved_b, saved_c, saved_d;
-
+
ptr = (const unsigned char *)data;
-
+
a = ctx->a;
b = ctx->b;
c = ctx->c;
d = ctx->d;
-
+
do {
saved_a = a;
saved_b = b;
saved_c = c;
saved_d = d;
-
+
/* Round 1 */
STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
@@ -133,7 +133,7 @@ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
-
+
/* Round 2 */
STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
@@ -151,7 +151,7 @@ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
-
+
/* Round 3 */
STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
STEP(H2, d, a, b, c, GET(8), 0x8771f681, 11)
@@ -169,7 +169,7 @@ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
STEP(H2, d, a, b, c, GET(12), 0xe6db99e5, 11)
STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
STEP(H2, b, c, d, a, GET(2), 0xc4ac5665, 23)
-
+
/* Round 4 */
STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
@@ -187,20 +187,20 @@ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
-
+
a += saved_a;
b += saved_b;
c += saved_c;
d += saved_d;
-
+
ptr += 64;
} while (size -= 64);
-
+
ctx->a = a;
ctx->b = b;
ctx->c = c;
ctx->d = d;
-
+
return ptr;
}
@@ -210,81 +210,81 @@ void MD5_Init(MD5_CTX *ctx)
ctx->b = 0xefcdab89;
ctx->c = 0x98badcfe;
ctx->d = 0x10325476;
-
+
ctx->lo = 0;
ctx->hi = 0;
}
-
+
void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
{
MD5_u32plus saved_lo;
unsigned long used, available;
-
+
saved_lo = ctx->lo;
if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
ctx->hi++;
ctx->hi += size >> 29;
-
+
used = saved_lo & 0x3f;
-
+
if (used) {
available = 64 - used;
-
+
if (size < available) {
memcpy(&ctx->buffer[used], data, size);
return;
}
-
+
memcpy(&ctx->buffer[used], data, available);
data = (const unsigned char *)data + available;
size -= available;
body(ctx, ctx->buffer, 64);
}
-
+
if (size >= 64) {
data = body(ctx, data, size & ~(unsigned long)0x3f);
size &= 0x3f;
}
-
+
memcpy(ctx->buffer, data, size);
}
-
-#define OUT(dst, src) \
+
+#define PUT_VALUE32(dst, src) \
(dst)[0] = (unsigned char)(src); \
(dst)[1] = (unsigned char)((src) >> 8); \
(dst)[2] = (unsigned char)((src) >> 16); \
(dst)[3] = (unsigned char)((src) >> 24);
-
+
void MD5_Final(unsigned char *result, MD5_CTX *ctx)
{
unsigned long used, available;
-
+
used = ctx->lo & 0x3f;
-
+
ctx->buffer[used++] = 0x80;
-
+
available = 64 - used;
-
+
if (available < 8) {
memset(&ctx->buffer[used], 0, available);
body(ctx, ctx->buffer, 64);
used = 0;
available = 64;
}
-
+
memset(&ctx->buffer[used], 0, available - 8);
-
+
ctx->lo <<= 3;
- OUT(&ctx->buffer[56], ctx->lo)
- OUT(&ctx->buffer[60], ctx->hi)
-
+ PUT_VALUE32(&ctx->buffer[56], ctx->lo)
+ PUT_VALUE32(&ctx->buffer[60], ctx->hi)
+
body(ctx, ctx->buffer, 64);
-
- OUT(&result[0], ctx->a)
- OUT(&result[4], ctx->b)
- OUT(&result[8], ctx->c)
- OUT(&result[12], ctx->d)
-
+
+ PUT_VALUE32(&result[0], ctx->a)
+ PUT_VALUE32(&result[4], ctx->b)
+ PUT_VALUE32(&result[8], ctx->c)
+ PUT_VALUE32(&result[12], ctx->d)
+
memset(ctx, 0, sizeof(*ctx));
}