Add HMAC as per RFC 2104 draft implementation

This commit is contained in:
hashlag
2025-08-21 02:09:30 +03:00
parent 6c2feef644
commit be03a5314c
5 changed files with 181 additions and 5 deletions

View File

@@ -162,6 +162,10 @@ struct Md4Hash : public Hash<Md4Hash>
class Md4Hasher : public Hasher<Md4Hasher>
{
public:
using HashType = Md4Hash;
static constexpr size_t BLOCK_SIZE_BYTES = 64;
Md4Hasher()
{
ResetImpl();
@@ -178,7 +182,7 @@ public:
MessageSizeBytes_ += UpdateImpl(begin, end);
}
Md4Hash Finish()
HashType Finish()
{
uint64_t messageSizeBytesMod64 = MessageSizeBytes_ % 64;
@@ -218,7 +222,7 @@ public:
UpdateImpl(encodedMessageSizeBits,
encodedMessageSizeBits + std::size(encodedMessageSizeBits));
Md4Hash result;
HashType result;
int_fast8_t i = 0;
for (int_fast8_t reg = 0; reg < 4; ++reg)

View File

@@ -186,6 +186,10 @@ struct Md5Hash : public Hash<Md5Hash>
class Md5Hasher : public Hasher<Md5Hasher>
{
public:
using HashType = Md5Hash;
static constexpr size_t BLOCK_SIZE_BYTES = 64;
Md5Hasher()
{
ResetImpl();
@@ -202,7 +206,7 @@ public:
MessageSizeBytes_ += UpdateImpl(begin, end);
}
Md5Hash Finish()
HashType Finish()
{
uint64_t messageSizeBytesMod64 = MessageSizeBytes_ % 64;
@@ -242,7 +246,7 @@ public:
UpdateImpl(encodedMessageSizeBits,
encodedMessageSizeBits + std::size(encodedMessageSizeBits));
Md5Hash result;
HashType result;
int_fast8_t i = 0;
for (int_fast8_t reg = 0; reg < 4; ++reg)