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

#include <eddsa.hpp>

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

Public Types

typedef scheme_public_key_type::base_field_type base_field_type
 
typedef base_field_type::value_type base_field_value_type
 
typedef scheme_public_key_type::base_integral_type base_integral_type
 
typedef scheme_public_key_type::endianness endianness
 
typedef scheme_type::group_type group_type
 
typedef scheme_public_key_type::group_value_type group_value_type
 
typedef scheme_public_key_type::hash_type hash_type
 
typedef scheme_public_key_type::internal_accumulator_type internal_accumulator_type
 
typedef scheme_public_key_type::marshalling_base_integral_type marshalling_base_integral_type
 
typedef scheme_public_key_type::marshalling_group_value_type marshalling_group_value_type
 
typedef scheme_public_key_type::marshalling_scalar_field_value_type marshalling_scalar_field_value_type
 
typedef scheme_public_key_type::marshalling_uint512_t_type marshalling_uint512_t_type
 
typedef scheme_public_key_type::padding_policy padding_policy
 
typedef scheme_public_key_type::policy_type policy_type
 
typedef static_digest< private_key_bits+(base_field_type::modulus_bits % std::numeric_limits< std::uint8_t >::digits ? 1 :0)> private_key_type
 
typedef scheme_public_key_type::public_key_type public_key_type
 
typedef scheme_public_key_type::scalar_field_type scalar_field_type
 
typedef scheme_public_key_type::scalar_field_value_type scalar_field_value_type
 
typedef scheme_public_key_type::scalar_integral_type scalar_integral_type
 
typedef public_key< scheme_typescheme_public_key_type
 
typedef eddsa< CurveGroup, eddsa_variant, Params > scheme_type
 
typedef scheme_public_key_type::signature_type signature_type
 

Public Member Functions

 private_key ()=delete
 
 private_key (const private_key_type &key)
 
public_key_type public_key_data () const
 
signature_type sign (internal_accumulator_type &acc) 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 public_key_type generate_public_key (const private_key_type &key)
 
static void init_accumulator (internal_accumulator_type &acc)
 

Static Public Attributes

constexpr static const std::size_t private_key_bits = base_field_type::modulus_bits
 
constexpr static const std::size_t public_key_bits = scheme_public_key_type::public_key_bits
 
constexpr static const std::size_t signature_bits = scheme_public_key_type::signature_bits
 

Static Protected Member Functions

static base_integral_type construct_scalar (const typename hash_type::digest_type &h)
 
static group_value_type read_pubkey (const public_key_type &pubkey)
 

Protected Attributes

hash_type::digest_type h_privkey
 
private_key_type privkey
 
public_key_type pubkey
 
group_value_type pubkey_point
 
scalar_field_value_type s_reduced
 

Member Typedef Documentation

◆ base_field_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::base_field_type nil::crypto3::pubkey::private_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
inherited

◆ base_integral_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::base_integral_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::base_integral_type

◆ endianness

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::endianness nil::crypto3::pubkey::private_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
inherited

◆ group_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::group_value_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::group_value_type

◆ hash_type

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

◆ internal_accumulator_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::internal_accumulator_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::internal_accumulator_type

◆ marshalling_base_integral_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::marshalling_base_integral_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::marshalling_base_integral_type

◆ marshalling_group_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::marshalling_group_value_type nil::crypto3::pubkey::private_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 scheme_public_key_type::marshalling_scalar_field_value_type nil::crypto3::pubkey::private_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 scheme_public_key_type::marshalling_uint512_t_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::marshalling_uint512_t_type

◆ padding_policy

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

◆ policy_type

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

◆ private_key_type

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

◆ public_key_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::public_key_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::public_key_type

◆ scalar_field_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::scalar_field_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::scalar_field_type

◆ scalar_field_value_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::scalar_field_value_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::scalar_field_value_type

◆ scalar_integral_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::scalar_integral_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::scalar_integral_type

◆ scheme_public_key_type

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

◆ scheme_type

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

◆ signature_type

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
typedef scheme_public_key_type::signature_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::signature_type

Constructor & Destructor Documentation

◆ private_key() [1/2]

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

◆ private_key() [2/2]

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

Member Function Documentation

◆ construct_scalar()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
static base_integral_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::construct_scalar ( const typename hash_type::digest_type &  h)
inlinestaticprotected

◆ generate_public_key()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
static public_key_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::generate_public_key ( const private_key_type key)
inlinestatic

◆ init_accumulator()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
static void nil::crypto3::pubkey::private_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
inlineinherited

◆ 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)
inlinestaticprotectedinherited

◆ sign()

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
signature_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::sign ( internal_accumulator_type acc) const
inline

◆ update() [1/2]

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
template<typename InputRange >
void nil::crypto3::pubkey::private_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::private_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
inlineinherited

Member Data Documentation

◆ h_privkey

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
hash_type::digest_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::h_privkey
protected

◆ private_key_bits

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

◆ privkey

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
private_key_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::privkey
protected

◆ pubkey

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

◆ 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
protectedinherited

◆ public_key_bits

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

◆ s_reduced

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
scalar_field_value_type nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::s_reduced
protected

◆ signature_bits

template<typename CurveGroup , eddsa_type eddsa_variant, typename Params >
constexpr static const std::size_t nil::crypto3::pubkey::private_key< eddsa< CurveGroup, eddsa_variant, Params > >::signature_bits = scheme_public_key_type::signature_bits
staticconstexpr

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