From fc9b28a97b9c8124840a82d798b7b1be18ecad43 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 1 Mar 2021 20:51:28 +0100 Subject: chore: split sha256 in base sha class --- include/sha256.h | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) (limited to 'include/sha256.h') diff --git a/include/sha256.h b/include/sha256.h index c02eb40..921a50f 100644 --- a/include/sha256.h +++ b/include/sha256.h @@ -9,37 +9,21 @@ #include #include +#include "sha.h" namespace hmacsha256 { -class SHA256 { +class SHA256 : public SHA { public: // create a new SHA256 thanks an array of bytes SHA256(const uint8_t*, uint32_t); SHA256(const std::string&); - ~SHA256(); - // get digest as array of bytes - uint8_t* digest(); + uint8_t* digest() override; - std::string hexdigest(); + std::string hexdigest() override; private: - uint8_t* digest_; - - // work variables: a, b, c, d, e, f, g, h - uint32_t vars_[8]; - - // data message, in bytes - // M, "message to be hashed" - uint8_t message_[64]; - - // length L of the original message - uint32_t message_l_; - - // lengh of bits - uint64_t bit_len_; - // first 80 costansts 64bit words, paragraph 4.2.2 std::array K = { 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5, @@ -61,7 +45,7 @@ private: }; // the constructor - void init(const uint8_t* data, uint32_t length); + void init(const uint8_t* data, uint32_t length) override; // Ch(x, y, z) = (x | y) ^ (~x & z) static uint32_t ch(uint32_t, uint32_t, uint32_t); @@ -90,10 +74,10 @@ private: static uint32_t sigma1(uint32_t); // padding - void pad(); + void pad() override; // main function - void transform(); + void transform() override; // transform bytes in big-endian, because SHA256 wants big endian ordering // Takes 1 parameter, the array of bytes that we want to reorder -- cgit v1.2.3-18-g5258