nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds > Struct Template Reference

#include <poseidon_lfsr.hpp>

+ Collaboration diagram for nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >:

Public Types

typedef FieldType::value_type element_type
 
typedef FieldType::integral_type integral_type
 
typedef number< backends::cpp_int_backend< lfsr_state_bits, lfsr_state_bits, cpp_integer_type::unsigned_magnitude, cpp_int_check_type::unchecked, void > > lfsr_state_type
 
typedef poseidon_policy< FieldType, Arity, PartRounds > policy_type
 
typedef algebra::vector< element_type, constants_numberround_constants_type
 

Public Member Functions

constexpr void generate_round_constants ()
 
constexpr lfsr_state_type get_lfsr_init_state ()
 
constexpr bool get_lfsr_state_bit (lfsr_state_type state, std::size_t pos)
 
constexpr poseidon_lfsr ()
 
template<typename T >
constexpr T set_new_bit (T var, bool new_bit)
 
constexpr lfsr_state_type update_lfsr_state (lfsr_state_type state)
 
constexpr lfsr_state_type update_lfsr_state_raw (lfsr_state_type state)
 

Public Attributes

round_constants_type round_constants
 

Static Public Attributes

constexpr static const std::size_t constants_number = (full_rounds + part_rounds) * state_words
 
constexpr static const std::size_t full_rounds = policy_type::full_rounds
 
constexpr static const std::size_t lfsr_state_bits = 80
 
constexpr static const integral_type modulus = FieldType::modulus
 
constexpr static const std::size_t part_rounds = policy_type::part_rounds
 
constexpr static const std::size_t state_words = policy_type::state_words
 
constexpr static const std::size_t word_bits = policy_type::word_bits
 

Member Typedef Documentation

◆ element_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef FieldType::value_type nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::element_type

◆ integral_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef FieldType::integral_type nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::integral_type

◆ lfsr_state_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef number<backends::cpp_int_backend< lfsr_state_bits, lfsr_state_bits, cpp_integer_type::unsigned_magnitude, cpp_int_check_type::unchecked, void> > nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::lfsr_state_type

◆ policy_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef poseidon_policy<FieldType, Arity, PartRounds> nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::policy_type

◆ round_constants_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef algebra::vector<element_type, constants_number> nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::round_constants_type

Constructor & Destructor Documentation

◆ poseidon_lfsr()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::poseidon_lfsr ( )
inlineconstexpr

Member Function Documentation

◆ generate_round_constants()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr void nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::generate_round_constants ( )
inlineconstexpr

◆ get_lfsr_init_state()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr lfsr_state_type nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::get_lfsr_init_state ( )
inlineconstexpr

◆ get_lfsr_state_bit()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr bool nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::get_lfsr_state_bit ( lfsr_state_type  state,
std::size_t  pos 
)
inlineconstexpr

◆ set_new_bit()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
template<typename T >
constexpr T nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::set_new_bit ( var,
bool  new_bit 
)
inlineconstexpr

◆ update_lfsr_state()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr lfsr_state_type nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::update_lfsr_state ( lfsr_state_type  state)
inlineconstexpr

◆ update_lfsr_state_raw()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr lfsr_state_type nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::update_lfsr_state_raw ( lfsr_state_type  state)
inlineconstexpr

Member Data Documentation

◆ constants_number

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::constants_number = (full_rounds + part_rounds) * state_words
staticconstexpr

◆ full_rounds

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::full_rounds = policy_type::full_rounds
staticconstexpr

◆ lfsr_state_bits

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::lfsr_state_bits = 80
staticconstexpr

◆ modulus

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const integral_type nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::modulus = FieldType::modulus
staticconstexpr

◆ part_rounds

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::part_rounds = policy_type::part_rounds
staticconstexpr

◆ round_constants

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
round_constants_type nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::round_constants

◆ state_words

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::state_words = policy_type::state_words
staticconstexpr

◆ word_bits

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_lfsr< FieldType, Arity, PartRounds >::word_bits = policy_type::word_bits
staticconstexpr

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