diff --git a/src/ripemd128.c b/src/ripemd128.c
deleted file mode 100644
index eb71aed..0000000
--- a/src/ripemd128.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- Copyright (C) 2009 Gabriel A. Petursson
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include
-#include
-#include
-
-#include "ripemd128.h"
-
-#define RIPEMD128_R1(x, y, z) (x ^ y ^ z)
-#define RIPEMD128_R2(x, y, z) (((x & y) | (~x & z)) + 0x5a827999)
-#define RIPEMD128_R3(x, y, z) (((x | ~y) ^ z) + 0x6ed9eba1)
-#define RIPEMD128_R4(x, y, z) (((x & z) | (y & ~z)) + 0x8f1bbcdc)
-#define RIPEMD128_R5(x, y, z) (((x & z) | (y & ~z)) + 0x50a28be6)
-#define RIPEMD128_R6(x, y, z) (((x | ~y) ^ z) + 0x5c4dd124)
-#define RIPEMD128_R7(x, y, z) (((x & y) | (~x & z)) + 0x6d703ef3)
-#define RIPEMD128_R8 RIPEMD128_R1
-
-#define RIPEMD128_PRC(a, b, c, d, idx, rot, rnd) { \
- wv[a] = ROL(wv[a] + RIPEMD128_R##rnd(wv[b], wv[c], wv[d]) + idx, rot); \
-}
-
-#define UNPACK_32_LE(x, str) { \
- *((str)) = (uint8_t) (x); \
- *((str) + 1) = (uint8_t) ((x) >> 8); \
- *((str) + 2) = (uint8_t) ((x) >> 16); \
- *((str) + 3) = (uint8_t) ((x) >> 24); \
-}
-
-#define PACK_32_LE(str, x) { \
- *(x) = ((uint32_t) *((str) )) \
- ^ ((uint32_t) *((str) + 1) << 8) \
- ^ ((uint32_t) *((str) + 2) << 16) \
- ^ ((uint32_t) *((str) + 3) << 24); \
-}
-
-#define UNPACK_64_LE(x, str) { \
- *((str)) = (uint8_t) (x); \
- *((str) + 1) = (uint8_t) ((x) >> 8); \
- *((str) + 2) = (uint8_t) ((x) >> 16); \
- *((str) + 3) = (uint8_t) ((x) >> 24); \
- *((str) + 4) = (uint8_t) ((x) >> 32); \
- *((str) + 5) = (uint8_t) ((x) >> 40); \
- *((str) + 6) = (uint8_t) ((x) >> 48); \
- *((str) + 7) = (uint8_t) ((x) >> 56); \
-}
-
-#define ROL(x, y) (((x) << (y)) ^ ((x) >> ((sizeof(x) * 8) - (y))))
-
-void ampheck_ripemd128_init (struct ampheck_ripemd128 *ctx)
-{
- ctx->h[0] = 0x67452301;
- ctx->h[1] = 0xefcdab89;
- ctx->h[2] = 0x98badcfe;
- ctx->h[3] = 0x10325476;
-
- ctx->length = 0;
-}
-
-void ampheck_ripemd128_transform (struct ampheck_ripemd128 *ctx,
- const uint8_t *data,
- size_t blocks)
-{
- size_t i;
- for (i = 0; i < blocks; ++i) {
- uint32_t wv[8];
- uint32_t w[16];
-
- PACK_32_LE (&data[ (i << 6) ], &w[ 0]);
- PACK_32_LE (&data[ (i << 6) + 4], &w[ 1]);
- PACK_32_LE (&data[ (i << 6) + 8], &w[ 2]);
- PACK_32_LE (&data[ (i << 6) + 12], &w[ 3]);
- PACK_32_LE (&data[ (i << 6) + 16], &w[ 4]);
- PACK_32_LE (&data[ (i << 6) + 20], &w[ 5]);
- PACK_32_LE (&data[ (i << 6) + 24], &w[ 6]);
- PACK_32_LE (&data[ (i << 6) + 28], &w[ 7]);
- PACK_32_LE (&data[ (i << 6) + 32], &w[ 8]);
- PACK_32_LE (&data[ (i << 6) + 36], &w[ 9]);
- PACK_32_LE (&data[ (i << 6) + 40], &w[10]);
- PACK_32_LE (&data[ (i << 6) + 44], &w[11]);
- PACK_32_LE (&data[ (i << 6) + 48], &w[12]);
- PACK_32_LE (&data[ (i << 6) + 52], &w[13]);
- PACK_32_LE (&data[ (i << 6) + 56], &w[14]);
- PACK_32_LE (&data[ (i << 6) + 60], &w[15]);
-
- wv[0] = ctx->h[0];
- wv[1] = ctx->h[1];
- wv[2] = ctx->h[2];
- wv[3] = ctx->h[3];
- memcpy (&wv[4], wv, 4 * sizeof (uint32_t) );
-
- RIPEMD128_PRC (0, 1, 2, 3, w[ 0], 11, 1);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 1], 14, 1);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 2], 15, 1);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 3], 12, 1);
- RIPEMD128_PRC (0, 1, 2, 3, w[ 4], 5, 1);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 5], 8, 1);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 6], 7, 1);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 7], 9, 1);
- RIPEMD128_PRC (0, 1, 2, 3, w[ 8], 11, 1);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 9], 13, 1);
- RIPEMD128_PRC (2, 3, 0, 1, w[10], 14, 1);
- RIPEMD128_PRC (1, 2, 3, 0, w[11], 15, 1);
- RIPEMD128_PRC (0, 1, 2, 3, w[12], 6, 1);
- RIPEMD128_PRC (3, 0, 1, 2, w[13], 7, 1);
- RIPEMD128_PRC (2, 3, 0, 1, w[14], 9, 1);
- RIPEMD128_PRC (1, 2, 3, 0, w[15], 8, 1);
-
- RIPEMD128_PRC (0, 1, 2, 3, w[ 7], 7, 2);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 4], 6, 2);
- RIPEMD128_PRC (2, 3, 0, 1, w[13], 8, 2);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 1], 13, 2);
- RIPEMD128_PRC (0, 1, 2, 3, w[10], 11, 2);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 6], 9, 2);
- RIPEMD128_PRC (2, 3, 0, 1, w[15], 7, 2);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 3], 15, 2);
- RIPEMD128_PRC (0, 1, 2, 3, w[12], 7, 2);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 0], 12, 2);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 9], 15, 2);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 5], 9, 2);
- RIPEMD128_PRC (0, 1, 2, 3, w[ 2], 11, 2);
- RIPEMD128_PRC (3, 0, 1, 2, w[14], 7, 2);
- RIPEMD128_PRC (2, 3, 0, 1, w[11], 13, 2);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 8], 12, 2);
-
- RIPEMD128_PRC (0, 1, 2, 3, w[ 3], 11, 3);
- RIPEMD128_PRC (3, 0, 1, 2, w[10], 13, 3);
- RIPEMD128_PRC (2, 3, 0, 1, w[14], 6, 3);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 4], 7, 3);
- RIPEMD128_PRC (0, 1, 2, 3, w[ 9], 14, 3);
- RIPEMD128_PRC (3, 0, 1, 2, w[15], 9, 3);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 8], 13, 3);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 1], 15, 3);
- RIPEMD128_PRC (0, 1, 2, 3, w[ 2], 14, 3);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 7], 8, 3);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 0], 13, 3);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 6], 6, 3);
- RIPEMD128_PRC (0, 1, 2, 3, w[13], 5, 3);
- RIPEMD128_PRC (3, 0, 1, 2, w[11], 12, 3);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 5], 7, 3);
- RIPEMD128_PRC (1, 2, 3, 0, w[12], 5, 3);
-
- RIPEMD128_PRC (0, 1, 2, 3, w[ 1], 11, 4);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 9], 12, 4);
- RIPEMD128_PRC (2, 3, 0, 1, w[11], 14, 4);
- RIPEMD128_PRC (1, 2, 3, 0, w[10], 15, 4);
- RIPEMD128_PRC (0, 1, 2, 3, w[ 0], 14, 4);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 8], 15, 4);
- RIPEMD128_PRC (2, 3, 0, 1, w[12], 9, 4);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 4], 8, 4);
- RIPEMD128_PRC (0, 1, 2, 3, w[13], 9, 4);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 3], 14, 4);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 7], 5, 4);
- RIPEMD128_PRC (1, 2, 3, 0, w[15], 6, 4);
- RIPEMD128_PRC (0, 1, 2, 3, w[14], 8, 4);
- RIPEMD128_PRC (3, 0, 1, 2, w[ 5], 6, 4);
- RIPEMD128_PRC (2, 3, 0, 1, w[ 6], 5, 4);
- RIPEMD128_PRC (1, 2, 3, 0, w[ 2], 12, 4);
-
- RIPEMD128_PRC (4, 5, 6, 7, w[ 5], 8, 5);
- RIPEMD128_PRC (7, 4, 5, 6, w[14], 9, 5);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 7], 9, 5);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 0], 11, 5);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 9], 13, 5);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 2], 15, 5);
- RIPEMD128_PRC (6, 7, 4, 5, w[11], 15, 5);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 4], 5, 5);
- RIPEMD128_PRC (4, 5, 6, 7, w[13], 7, 5);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 6], 7, 5);
- RIPEMD128_PRC (6, 7, 4, 5, w[15], 8, 5);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 8], 11, 5);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 1], 14, 5);
- RIPEMD128_PRC (7, 4, 5, 6, w[10], 14, 5);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 3], 12, 5);
- RIPEMD128_PRC (5, 6, 7, 4, w[12], 6, 5);
-
- RIPEMD128_PRC (4, 5, 6, 7, w[ 6], 9, 6);
- RIPEMD128_PRC (7, 4, 5, 6, w[11], 13, 6);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 3], 15, 6);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 7], 7, 6);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 0], 12, 6);
- RIPEMD128_PRC (7, 4, 5, 6, w[13], 8, 6);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 5], 9, 6);
- RIPEMD128_PRC (5, 6, 7, 4, w[10], 11, 6);
- RIPEMD128_PRC (4, 5, 6, 7, w[14], 7, 6);
- RIPEMD128_PRC (7, 4, 5, 6, w[15], 7, 6);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 8], 12, 6);
- RIPEMD128_PRC (5, 6, 7, 4, w[12], 7, 6);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 4], 6, 6);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 9], 15, 6);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 1], 13, 6);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 2], 11, 6);
-
- RIPEMD128_PRC (4, 5, 6, 7, w[15], 9, 7);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 5], 7, 7);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 1], 15, 7);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 3], 11, 7);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 7], 8, 7);
- RIPEMD128_PRC (7, 4, 5, 6, w[14], 6, 7);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 6], 6, 7);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 9], 14, 7);
- RIPEMD128_PRC (4, 5, 6, 7, w[11], 12, 7);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 8], 13, 7);
- RIPEMD128_PRC (6, 7, 4, 5, w[12], 5, 7);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 2], 14, 7);
- RIPEMD128_PRC (4, 5, 6, 7, w[10], 13, 7);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 0], 13, 7);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 4], 7, 7);
- RIPEMD128_PRC (5, 6, 7, 4, w[13], 5, 7);
-
- RIPEMD128_PRC (4, 5, 6, 7, w[ 8], 15, 8);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 6], 5, 8);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 4], 8, 8);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 1], 11, 8);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 3], 14, 8);
- RIPEMD128_PRC (7, 4, 5, 6, w[11], 14, 8);
- RIPEMD128_PRC (6, 7, 4, 5, w[15], 6, 8);
- RIPEMD128_PRC (5, 6, 7, 4, w[ 0], 14, 8);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 5], 6, 8);
- RIPEMD128_PRC (7, 4, 5, 6, w[12], 9, 8);
- RIPEMD128_PRC (6, 7, 4, 5, w[ 2], 12, 8);
- RIPEMD128_PRC (5, 6, 7, 4, w[13], 9, 8);
- RIPEMD128_PRC (4, 5, 6, 7, w[ 9], 12, 8);
- RIPEMD128_PRC (7, 4, 5, 6, w[ 7], 5, 8);
- RIPEMD128_PRC (6, 7, 4, 5, w[10], 15, 8);
- RIPEMD128_PRC (5, 6, 7, 4, w[14], 8, 8);
-
- wv[7] += wv[2] + ctx->h[1];
- ctx->h[1] = ctx->h[2] + wv[3] + wv[4];
- ctx->h[2] = ctx->h[3] + wv[0] + wv[5];
- ctx->h[3] = ctx->h[0] + wv[1] + wv[6];
- ctx->h[0] = wv[7];
- }
-}
-
-void ampheck_ripemd128_update (struct ampheck_ripemd128 *ctx,
- const uint8_t *data,
- size_t size)
-{
- size_t tmp = size;
-
- if (size >= 64 - ctx->length % 64) {
- memcpy (&ctx->buffer[ctx->length % 64],
- data, 64 - ctx->length % 64);
-
- data += 64 - ctx->length % 64;
- size -= 64 - ctx->length % 64;
-
- ampheck_ripemd128_transform (ctx, ctx->buffer, 1);
- ampheck_ripemd128_transform (ctx, data, size / 64);
-
- data += size & ~63;
- size %= 64;
-
- memcpy (ctx->buffer, data, size);
- } else {
- memcpy (&ctx->buffer[ctx->length % 64], data, size);
- }
-
- ctx->length += tmp;
-}
-
-void ampheck_ripemd128_finish (const struct ampheck_ripemd128 *ctx,
- uint8_t *digest)
-{
- struct ampheck_ripemd128 tmp;
-
- memcpy (tmp.h, ctx->h, 4 * sizeof (uint32_t) );
- memcpy (tmp.buffer, ctx->buffer, ctx->length % 64);
-
- tmp.buffer[ctx->length % 64] = 0x80;
-
- if (ctx->length % 64 < 56) {
- memset (&tmp.buffer[ctx->length % 64 + 1],
- 0x00, 55 - ctx->length % 64);
- } else {
- memset (&tmp.buffer[ctx->length % 64 + 1],
- 0x00, 63 - ctx->length % 64);
- ampheck_ripemd128_transform (&tmp, tmp.buffer, 1);
-
- memset (tmp.buffer, 0x00, 56);
- }
-
- UNPACK_64_LE (ctx->length * 8, &tmp.buffer[56]);
- ampheck_ripemd128_transform (&tmp, tmp.buffer, 1);
-
- UNPACK_32_LE (tmp.h[0], &digest[ 0]);
- UNPACK_32_LE (tmp.h[1], &digest[ 4]);
- UNPACK_32_LE (tmp.h[2], &digest[ 8]);
- UNPACK_32_LE (tmp.h[3], &digest[12]);
-}
diff --git a/src/ripemd128.h b/src/ripemd128.h
deleted file mode 100644
index 8d974e8..0000000
--- a/src/ripemd128.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (C) 2009 Gabriel A. Petursson
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#ifndef ampheck_ripemd128_h
-#define ampheck_ripemd128_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define RIPEMD128_DIGEST_LENGTH 16
-#include
-#include
-
-struct ampheck_ripemd128 {
- uint32_t h[4];
- uint8_t buffer[64];
-
- uint64_t length;
-};
-
-void ampheck_ripemd128_init (struct ampheck_ripemd128 *ctx);
-
-void ampheck_ripemd128_update (struct ampheck_ripemd128 *ctx,
- const uint8_t *data,
- size_t length);
-
-void ampheck_ripemd128_finish (const struct ampheck_ripemd128 *ctx,
- uint8_t *digest);
-
-#ifdef __cplusplus
-} //extern "C"
-#endif
-
-#endif
diff --git a/src/rmd_hash.h b/src/rmd_hash.h
index f6231ee..fae7841 100644
--- a/src/rmd_hash.h
+++ b/src/rmd_hash.h
@@ -21,22 +21,21 @@
#define _ccr_rmd_hash_h_
#include "hash.h"
-#include "ripemd128.h"
+#include
class rmd128hash : public hash_func
{
public:
uint size() {
- return RIPEMD128_DIGEST_LENGTH;
+ return CryptoPP::RIPEMD128::DIGESTSIZE;
}
std::vector operator() (const std::vector&a) {
- ampheck_ripemd128 ctx;
- ampheck_ripemd128_init (&ctx);
- ampheck_ripemd128_update (&ctx, (const uint8_t*) & (a[0]), a.size() );
std::vector r;
r.resize (size() );
- ampheck_ripemd128_finish (&ctx, (uint8_t*) & (r[0]) );
+ CryptoPP::RIPEMD128().CalculateDigest (& (r[0]),
+ & (a[0]),
+ a.size() );
return r;
}
};