Skip to content

src/crypto/hasher.hpp

Namespaces

Name
sgns
sgns::crypto

Classes

Name
class sgns::crypto::Hasher

Source code

#ifndef SUPERGENIUS_SRC_HASHER_HASHER_HPP_
#define SUPERGENIUS_SRC_HASHER_HASHER_HPP_

#include "base/blob.hpp"
#include "singleton/IComponent.hpp"

namespace sgns::crypto {
  class Hasher : public IComponent {
   protected:
    using Hash64 = base::Hash64;
    using Hash128 = base::Hash128;
    using Hash256 = base::Hash256;

   public:
       ~Hasher() override = default;

       //------------ by ruymaster ----//
       [[nodiscard]] virtual Hash64 twox_64( gsl::span<const uint8_t> buffer ) const = 0;

       //------------ by ruymaster ----//
       [[nodiscard]] virtual Hash128 twox_128( gsl::span<const uint8_t> buffer ) const = 0;

       [[nodiscard]] virtual Hash128 blake2b_128( gsl::span<const uint8_t> buffer ) const = 0;

       //---------------------
       [[nodiscard]] virtual Hash256 twox_256( gsl::span<const uint8_t> buffer ) const = 0;

       [[nodiscard]] virtual Hash256 blake2b_256( gsl::span<const uint8_t> buffer ) const = 0;

       [[nodiscard]] virtual Hash256 keccak_256( gsl::span<const uint8_t> buffer ) const = 0;

       [[nodiscard]] virtual Hash256 blake2s_256( gsl::span<const uint8_t> buffer ) const = 0;

       [[nodiscard]] virtual Hash256 sha2_256( gsl::span<const uint8_t> buffer ) const = 0;
  };
}

#endif

Updated on 2026-03-04 at 13:10:44 -0800