summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/hashing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util/hashing.cpp')
-rw-r--r--src/lib/util/hashing.cpp29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/lib/util/hashing.cpp b/src/lib/util/hashing.cpp
index e90c128a8a2..62447c7b6c0 100644
--- a/src/lib/util/hashing.cpp
+++ b/src/lib/util/hashing.cpp
@@ -11,6 +11,8 @@
#include "hashing.h"
#include "strformat.h"
+#include "eminline.h"
+
#include <zlib.h>
#include <iomanip>
@@ -40,50 +42,45 @@ constexpr int char_to_hex(char c)
}
-constexpr uint32_t sha1_rol(uint32_t x, unsigned n)
-{
- return (x << n) | (x >> (32 - n));
-}
-
inline uint32_t sha1_b(uint32_t *data, unsigned i)
{
uint32_t r = data[(i + 13) & 15U];
r ^= data[(i + 8) & 15U];
r ^= data[(i + 2) & 15U];
r ^= data[i & 15U];
- r = sha1_rol(r, 1);
+ r = rotl_32(r, 1);
data[i & 15U] = r;
return r;
}
inline void sha1_r0(const uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5]) + data[i] + 0x5a827999U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5]) + data[i] + 0x5a827999U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r1(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5])+ sha1_b(data, i) + 0x5a827999U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5])+ sha1_b(data, i) + 0x5a827999U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r2(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0x6ed9eba1U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0x6ed9eba1U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r3(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + (((d[(i + 3) % 5] | d[(i + 2) % 5]) & d[(i + 1) % 5]) | (d[(i + 3) % 5] & d[(i + 2) % 5])) + sha1_b(data, i) + 0x8f1bbcdcU + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + (((d[(i + 3) % 5] | d[(i + 2) % 5]) & d[(i + 1) % 5]) | (d[(i + 3) % 5] & d[(i + 2) % 5])) + sha1_b(data, i) + 0x8f1bbcdcU + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r4(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0xca62c1d6U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0xca62c1d6U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_process(std::array<uint32_t, 5> &st, uint32_t *data)