Skip to content

account/GeniusSigner.hpp

In-memory Genius keypair and canonical signature operations.

Namespaces

Name
sgns

Classes

Name
class sgns::GeniusSigner
Owns a Genius keypair without imposing account persistence or lifecycle concerns.

Source code

#ifndef SGNS_GENIUS_SIGNER_HPP
#define SGNS_GENIUS_SIGNER_HPP

#include <array>
#include <cstddef>
#include <cstdint>
#include <string>
#include <string_view>
#include <vector>

namespace sgns
{
    class GeniusSigner
    {
    public:
        static constexpr size_t PRIVATE_KEY_SIZE = 32;

        using PrivateKey = std::array<uint8_t, PRIVATE_KEY_SIZE>;

        static GeniusSigner Generate();

        explicit GeniusSigner( const PrivateKey &private_key );

        [[nodiscard]] std::string GetAddress() const;

        [[nodiscard]] std::vector<uint8_t> Sign( const std::vector<uint8_t> &data ) const;

        static bool VerifySignature( const std::string          &address,
                                     std::string_view            signature,
                                     const std::vector<uint8_t> &data );

        static bool VerifySignature( const std::string          &address,
                                     const std::vector<uint8_t> &signature,
                                     const std::vector<uint8_t> &data );

    private:
        static constexpr size_t SIGNATURE_SIZE = 64;

        PrivateKey  private_key_;
        std::string address_; 
    };
} // namespace sgns

#endif // SGNS_GENIUS_SIGNER_HPP

Updated on 2026-08-28 at 01:08:43 +0000