Skip to content

ProofSystem/include/ProofSystem/ECDSAPublicKey.hpp

ECDSA public key base class. More...

Classes

Name
class ECDSAPublicKey
Base class to organize public key values of ECDSA.

Detailed Description

ECDSA public key base class.

Date: 2023-12-26 Henrique A. Klein ([email protected])

Source code

#include <string>
#include <vector>
#include "ProofSystem/util.hpp"

#ifndef _ECDSA_PUBLIC_KEY_HPP_
#define _ECDSA_PUBLIC_KEY_HPP_

class ECDSAPublicKey
{
public:
    ECDSAPublicKey( std::vector<std::uint8_t> X_data, std::vector<std::uint8_t> Y_data ) :
        X( util::to_string( X_data ) ), //
        Y( util::to_string( Y_data ) ), //
        X_vect( std::move( X_data ) ),  //
        Y_vect( std::move( Y_data ) )
    {
    }
    virtual ~ECDSAPublicKey()
    {
    }

    const std::string               X;      
    const std::string               Y;      
    const std::vector<std::uint8_t> X_vect; 
    const std::vector<std::uint8_t> Y_vect; 

    operator std::string &()
    {
        if ( pubkey_used_value == "" )
        {
            pubkey_used_value = CalcPubkeyUsedValue();
        }
        return pubkey_used_value;
    }

    [[nodiscard]] std::string GetEntireKey() const
    {
        return ( X + Y );
    }

private:
    std::string pubkey_used_value; 

    [[nodiscard]] virtual std::string CalcPubkeyUsedValue() const = 0;
};

#endif

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