nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > > Struct Template Reference

#include <eddsa.hpp>

+ Inheritance diagram for nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >:
+ Collaboration diagram for nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >:

Public Types

typedef group_type::curve_type::base_field_type base_field_type
 
typedef base_field_type::value_type base_field_value_type
 
typedef base_field_type::integral_type base_integral_type
 
typedef nil::marshalling::option::little_endian endianness
 
typedef scheme_type::group_type group_type
 
typedef group_type::value_type group_value_type
 
typedef policy_type::hash_type hash_type
 
typedef padding::encoding_accumulator_set< padding_policyinternal_accumulator_type
 
typedef nil::crypto3::marshalling::types::integral< nil::marshalling::field_type< endianness >, base_integral_typemarshalling_base_integral_type
 
typedef nil::crypto3::marshalling::types::curve_element< nil::marshalling::field_type< endianness >, group_typemarshalling_group_value_type
 
typedef nil::crypto3::marshalling::types::field_element< nil::marshalling::field_type< endianness >, scalar_field_typemarshalling_scalar_field_value_type
 
typedef nil::crypto3::marshalling::types::integral< nil::marshalling::field_type< endianness >, nil::crypto3::multiprecision::uint512_t > marshalling_uint512_t_type
 
typedef policy_type::padding_policy padding_policy
 
typedef scheme_type::policy_type policy_type
 
typedef static_digest< public_key_bits+(base_field_type::modulus_bits % std::numeric_limits< std::uint8_t >::digits ? 1 :0)> public_key_type
 
typedef group_type::curve_type::scalar_field_type scalar_field_type
 
typedef scalar_field_type::value_type scalar_field_value_type
 
typedef scalar_field_type::integral_type scalar_integral_type
 
typedef eddsa< CurveGroup, eddsa_variant, Params > scheme_type
 
typedef static_digest< signature_bitssignature_type
 

Public Member Functions

 public_key ()=delete
 
 public_key (const public_key_type &key)
 
public_key_type public_key_data () const
 
template<typename InputRange >
void update (internal_accumulator_type &acc, const InputRange &range) const
 
template<typename InputIterator >
void update (internal_accumulator_type &acc, InputIterator first, InputIterator last) const
 
bool verify (internal_accumulator_type &acc, const signature_type &signature) const
 

Static Public Member Functions

static void init_accumulator (internal_accumulator_type &acc)
 

Static Public Attributes

constexpr static const std::size_t public_key_bits = base_field_type::modulus_bits
 
constexpr static const std::size_t signature_bits = 64 * std::numeric_limits<std::uint8_t>::digits
 

Static Protected Member Functions

static group_value_type read_pubkey (const public_key_type &pubkey)
 

Protected Attributes

public_key_type pubkey
 
group_value_type pubkey_point
 

Member Typedef Documentation

◆ base_field_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef group_type::curve_type::base_field_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::base_field_type

◆ base_field_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef base_field_type::value_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::base_field_value_type

◆ base_integral_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef base_field_type::integral_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::base_integral_type

◆ endianness

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef nil::marshalling::option::little_endian nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::endianness

◆ group_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_type::group_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::group_type

◆ group_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef group_type::value_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::group_value_type

◆ hash_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef policy_type::hash_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::hash_type

◆ internal_accumulator_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef padding::encoding_accumulator_set<padding_policy> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::internal_accumulator_type

◆ marshalling_base_integral_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef nil::crypto3::marshalling::types::integral<nil::marshalling::field_type<endianness>, base_integral_type> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::marshalling_base_integral_type

◆ marshalling_group_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef nil::crypto3::marshalling::types::curve_element<nil::marshalling::field_type<endianness>, group_type> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::marshalling_group_value_type

◆ marshalling_scalar_field_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef nil::crypto3::marshalling::types::field_element<nil::marshalling::field_type<endianness>, scalar_field_type> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::marshalling_scalar_field_value_type

◆ marshalling_uint512_t_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef nil::crypto3::marshalling::types::integral<nil::marshalling::field_type<endianness>, nil::crypto3::multiprecision::uint512_t> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::marshalling_uint512_t_type

◆ padding_policy

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef policy_type::padding_policy nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::padding_policy

◆ policy_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_type::policy_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::policy_type

◆ public_key_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef static_digest<public_key_bits + (base_field_type::modulus_bits % std::numeric_limits<std::uint8_t>::digits ? 1 : 0)> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::public_key_type

◆ scalar_field_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef group_type::curve_type::scalar_field_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::scalar_field_type

◆ scalar_field_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scalar_field_type::value_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::scalar_field_value_type

◆ scalar_integral_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scalar_field_type::integral_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::scalar_integral_type

◆ scheme_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef eddsa<CurveGroup, eddsa_variant, Params> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::scheme_type

◆ signature_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef static_digest<signature_bits> nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::signature_type

Constructor & Destructor Documentation

◆ public_key() [1/2]

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::public_key ( )
delete

◆ public_key() [2/2]

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::public_key ( const public_key_type key)
inline

Member Function Documentation

◆ init_accumulator()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
static void nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::init_accumulator ( internal_accumulator_type acc)
inlinestatic

◆ public_key_data()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
public_key_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::public_key_data ( ) const
inline

◆ read_pubkey()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
static group_value_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::read_pubkey ( const public_key_type pubkey)
inlinestaticprotected

◆ update() [1/2]

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
template<typename InputRange >
void nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::update ( internal_accumulator_type acc,
const InputRange &  range 
) const
inline

◆ update() [2/2]

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
template<typename InputIterator >
void nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::update ( internal_accumulator_type acc,
InputIterator  first,
InputIterator  last 
) const
inline

◆ verify()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
bool nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::verify ( internal_accumulator_type acc,
const signature_type signature 
) const
inline

Member Data Documentation

◆ pubkey

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
public_key_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::pubkey
protected

◆ pubkey_point

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
group_value_type nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::pubkey_point
protected

◆ public_key_bits

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
constexpr static const std::size_t nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::public_key_bits = base_field_type::modulus_bits
staticconstexpr

◆ signature_bits

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
constexpr static const std::size_t nil::crypto3::pubkey::public_key< eddsa< CurveGroup, eddsa_variant, Params > >::signature_bits = 64 * std::numeric_limits<std::uint8_t>::digits
staticconstexpr

The documentation for this struct was generated from the following file: