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

#include <poseidon_constants_operator.hpp>

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

Public Types

typedef poseidon_lfsr< field_type, Arity, PartRounds > constants_generator_policy_type
 
typedef field_type::value_type element_type
 
typedef algebra::vector< element_type, equivalent_round_constants_sizeequivalent_round_constants_type
 
typedef FieldType field_type
 
typedef poseidon_mds_matrix< field_type, Arity, PartRounds > matrix_policy_type
 
typedef poseidon_policy< field_type, Arity, PartRounds > policy_type
 
typedef policy_type::state_type state_type
 
typedef matrix_policy_type::state_vector_type state_vector_type
 

Public Member Functions

void arc_mds_part_round_optimized_init (state_vector_type &A, std::size_t round_number) const
 
void arc_sbox_mds_full_round (state_vector_type &A, std::size_t round_number) const
 
void arc_sbox_mds_full_round_optimized_first (state_vector_type &A, std::size_t round_number) const
 
void arc_sbox_mds_full_round_optimized_last (state_vector_type &A, std::size_t round_number) const
 
void arc_sbox_mds_part_round (state_vector_type &A, std::size_t round_number) const
 
void generate_equivalent_round_constants ()
 
const element_typeget_equivalent_round_constant (std::size_t constant_number) const
 
constexpr const element_typeget_round_constant (std::size_t constant_number) const
 
constexpr state_vector_type get_round_constants_slice (std::size_t constants_number_base) const
 
 poseidon_constants_operator ()
 
void sbox_arc_mds_part_round_optimized (state_vector_type &A, std::size_t round_number) const
 
void sbox_mds_part_round_optimized_last (state_vector_type &A, std::size_t round_number) const
 

Public Attributes

equivalent_round_constants_type equivalent_round_constants
 
matrix_policy_type policy_matrix
 
constants_generator_policy_type round_constants_generator
 

Static Public Attributes

constexpr static const std::size_t equivalent_round_constants_size
 
constexpr static const std::size_t full_rounds = policy_type::full_rounds
 
constexpr static const std::size_t half_full_rounds = policy_type::half_full_rounds
 
constexpr static const std::size_t part_rounds = policy_type::part_rounds
 
constexpr static const std::size_t round_constants_size = (full_rounds + part_rounds) * state_words
 
constexpr static const std::size_t state_words = policy_type::state_words
 

Member Typedef Documentation

◆ constants_generator_policy_type

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

◆ element_type

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

◆ equivalent_round_constants_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef algebra::vector<element_type, equivalent_round_constants_size> nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::equivalent_round_constants_type

◆ field_type

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

◆ matrix_policy_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef poseidon_mds_matrix<field_type, Arity, PartRounds> nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::matrix_policy_type

◆ policy_type

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

◆ state_type

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

◆ state_vector_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef matrix_policy_type::state_vector_type nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::state_vector_type

Constructor & Destructor Documentation

◆ poseidon_constants_operator()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::poseidon_constants_operator ( )
inline

Member Function Documentation

◆ arc_mds_part_round_optimized_init()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::arc_mds_part_round_optimized_init ( state_vector_type A,
std::size_t  round_number 
) const
inline

◆ arc_sbox_mds_full_round()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::arc_sbox_mds_full_round ( state_vector_type A,
std::size_t  round_number 
) const
inline

◆ arc_sbox_mds_full_round_optimized_first()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::arc_sbox_mds_full_round_optimized_first ( state_vector_type A,
std::size_t  round_number 
) const
inline

◆ arc_sbox_mds_full_round_optimized_last()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::arc_sbox_mds_full_round_optimized_last ( state_vector_type A,
std::size_t  round_number 
) const
inline

◆ arc_sbox_mds_part_round()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::arc_sbox_mds_part_round ( state_vector_type A,
std::size_t  round_number 
) const
inline

◆ generate_equivalent_round_constants()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::generate_equivalent_round_constants ( )
inline

◆ get_equivalent_round_constant()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
const element_type& nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::get_equivalent_round_constant ( std::size_t  constant_number) const
inline

◆ get_round_constant()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr const element_type& nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::get_round_constant ( std::size_t  constant_number) const
inlineconstexpr

◆ get_round_constants_slice()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr state_vector_type nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::get_round_constants_slice ( std::size_t  constants_number_base) const
inlineconstexpr

◆ sbox_arc_mds_part_round_optimized()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::sbox_arc_mds_part_round_optimized ( state_vector_type A,
std::size_t  round_number 
) const
inline

◆ sbox_mds_part_round_optimized_last()

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
void nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::sbox_mds_part_round_optimized_last ( state_vector_type A,
std::size_t  round_number 
) const
inline

Member Data Documentation

◆ equivalent_round_constants

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
equivalent_round_constants_type nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::equivalent_round_constants

◆ equivalent_round_constants_size

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::equivalent_round_constants_size
staticconstexpr
Initial value:
=
constexpr static const std::size_t state_words
Definition: poseidon_constants_operator.hpp:33
constexpr static const std::size_t full_rounds
Definition: poseidon_constants_operator.hpp:36
constexpr static const std::size_t part_rounds
Definition: poseidon_constants_operator.hpp:38

◆ full_rounds

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

◆ half_full_rounds

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::half_full_rounds = policy_type::half_full_rounds
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_constants_operator< FieldType, Arity, PartRounds >::part_rounds = policy_type::part_rounds
staticconstexpr

◆ policy_matrix

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
matrix_policy_type nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::policy_matrix

◆ round_constants_generator

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constants_generator_policy_type nil::crypto3::hashes::detail::poseidon_constants_operator< FieldType, Arity, PartRounds >::round_constants_generator

◆ round_constants_size

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

◆ state_words

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

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