Rework hashes (also fix Fletcher16 and CRC64)
This commit is contained in:
@@ -13,13 +13,11 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
struct HashCRC32_state;
|
||||
|
||||
class NAZARA_CORE_API HashCRC32 : public AbstractHash
|
||||
class NAZARA_CORE_API CRC32Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashCRC32(UInt32 polynomial = 0x04c11db7);
|
||||
virtual ~HashCRC32();
|
||||
CRC32Hash(UInt32 polynomial = DefaultPolynomial);
|
||||
virtual ~CRC32Hash();
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
@@ -28,8 +26,11 @@ namespace Nz
|
||||
std::size_t GetDigestLength() const override;
|
||||
const char* GetHashName() const override;
|
||||
|
||||
static constexpr UInt32 DefaultPolynomial = 0x04C11DB7;
|
||||
|
||||
private:
|
||||
HashCRC32_state* m_state;
|
||||
UInt32 m_crc;
|
||||
const UInt32* m_table;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class NAZARA_CORE_API HashCRC64 : public AbstractHash
|
||||
class NAZARA_CORE_API CRC64Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashCRC64() = default;
|
||||
~HashCRC64() = default;
|
||||
CRC64Hash() = default;
|
||||
~CRC64Hash() = default;
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
|
||||
@@ -13,13 +13,11 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
struct HashFletcher16_state;
|
||||
|
||||
class NAZARA_CORE_API HashFletcher16 : public AbstractHash
|
||||
class NAZARA_CORE_API Fletcher16Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashFletcher16();
|
||||
virtual ~HashFletcher16();
|
||||
Fletcher16Hash() = default;
|
||||
~Fletcher16Hash() = default;
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
@@ -29,7 +27,8 @@ namespace Nz
|
||||
const char* GetHashName() const override;
|
||||
|
||||
private:
|
||||
HashFletcher16_state* m_state;
|
||||
UInt16 m_sum1;
|
||||
UInt16 m_sum2;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -13,13 +13,11 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
struct HashMD5_state;
|
||||
|
||||
class NAZARA_CORE_API HashMD5 : public AbstractHash
|
||||
class NAZARA_CORE_API MD5Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashMD5();
|
||||
virtual ~HashMD5();
|
||||
MD5Hash() = default;
|
||||
~MD5Hash() = default;
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
@@ -29,7 +27,11 @@ namespace Nz
|
||||
const char* GetHashName() const override;
|
||||
|
||||
private:
|
||||
HashMD5_state* m_state;
|
||||
void md5_process(const UInt8* data);
|
||||
|
||||
std::size_t m_count[2]; /* message length in bits, lsw first */
|
||||
UInt32 m_abcd[4]; /* digest buffer */
|
||||
UInt8 m_buf[64]; /* accumulate block */
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -15,11 +15,11 @@ namespace Nz
|
||||
{
|
||||
union SHA_CTX;
|
||||
|
||||
class NAZARA_CORE_API HashSHA1 : public AbstractHash
|
||||
class NAZARA_CORE_API SHA1Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashSHA1();
|
||||
virtual ~HashSHA1();
|
||||
SHA1Hash();
|
||||
~SHA1Hash();
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
|
||||
@@ -15,11 +15,11 @@ namespace Nz
|
||||
{
|
||||
union SHA_CTX;
|
||||
|
||||
class NAZARA_CORE_API HashSHA224 : public AbstractHash
|
||||
class NAZARA_CORE_API SHA224Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashSHA224();
|
||||
virtual ~HashSHA224();
|
||||
SHA224Hash();
|
||||
~SHA224Hash();
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
|
||||
@@ -15,11 +15,11 @@ namespace Nz
|
||||
{
|
||||
union SHA_CTX;
|
||||
|
||||
class NAZARA_CORE_API HashSHA256 : public AbstractHash
|
||||
class NAZARA_CORE_API SHA256Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashSHA256();
|
||||
virtual ~HashSHA256();
|
||||
SHA256Hash();
|
||||
~SHA256Hash();
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
|
||||
@@ -15,11 +15,11 @@ namespace Nz
|
||||
{
|
||||
union SHA_CTX;
|
||||
|
||||
class NAZARA_CORE_API HashSHA384 : public AbstractHash
|
||||
class NAZARA_CORE_API SHA384Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashSHA384();
|
||||
virtual ~HashSHA384();
|
||||
SHA384Hash();
|
||||
~SHA384Hash();
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
|
||||
@@ -15,11 +15,11 @@ namespace Nz
|
||||
{
|
||||
union SHA_CTX;
|
||||
|
||||
class NAZARA_CORE_API HashSHA512 : public AbstractHash
|
||||
class NAZARA_CORE_API SHA512Hash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashSHA512();
|
||||
virtual ~HashSHA512();
|
||||
SHA512Hash();
|
||||
~SHA512Hash();
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
|
||||
@@ -13,13 +13,11 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
struct HashWhirlpool_state;
|
||||
|
||||
class NAZARA_CORE_API HashWhirlpool : public AbstractHash
|
||||
class NAZARA_CORE_API WhirlpoolHash final : public AbstractHash
|
||||
{
|
||||
public:
|
||||
HashWhirlpool();
|
||||
virtual ~HashWhirlpool();
|
||||
WhirlpoolHash() = default;
|
||||
~WhirlpoolHash() = default;
|
||||
|
||||
void Append(const UInt8* data, std::size_t len) override;
|
||||
void Begin() override;
|
||||
@@ -29,7 +27,13 @@ namespace Nz
|
||||
const char* GetHashName() const override;
|
||||
|
||||
private:
|
||||
HashWhirlpool_state* m_state;
|
||||
void ProcessBuffer();
|
||||
|
||||
std::size_t m_bufferBits; // current number of bits on the buffer */
|
||||
std::size_t m_bufferPos; // current (possibly incomplete) byte slot on the buffer */
|
||||
UInt8 m_bitLength[32]; // global number of hashed bits (256-bit counter) */
|
||||
UInt8 m_buffer[64]; // buffer of data to hash */
|
||||
UInt64 m_hash[8]; // the hashing state */
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user