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

Poseidon internal parameters. More...

#include <poseidon_policy.hpp>

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

Classes

struct  iv_generator
 

Public Types

typedef std::array< element_type, Arity > block_type
 
typedef element_type digest_type
 
typedef field_type::value_type element_type
 
typedef FieldType field_type
 
typedef std::array< element_type, Arity+1 > state_type
 
typedef element_type word_type
 

Static Public Attributes

constexpr static const std::size_t block_bits = Arity * field_type::modulus_bits
 
constexpr static const std::size_t block_words = Arity
 
constexpr static const std::size_t digest_bits = field_type::modulus_bits
 
constexpr static const std::size_t full_rounds = 8
 
constexpr static const std::size_t half_full_rounds = 4
 
constexpr static const std::size_t part_rounds = PartRounds
 
constexpr static const std::size_t state_bits = (Arity + 1) * field_type::modulus_bits
 
constexpr static const std::size_t state_words = (Arity + 1)
 
constexpr static const std::size_t word_bits = field_type::modulus_bits
 

Detailed Description

template<typename FieldType, std::size_t Arity, std::size_t PartRounds>
struct nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >

Poseidon internal parameters.

Template Parameters
FieldTypetype of field
Arityarity of input block for Poseidon permutation in field elements
Strengthmode of Poseidon permutation

Member Typedef Documentation

◆ block_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef std::array<element_type, Arity> nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >::block_type

◆ digest_type

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

◆ element_type

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

◆ field_type

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

◆ state_type

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
typedef std::array<element_type, Arity + 1> nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >::state_type

◆ word_type

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

Member Data Documentation

◆ block_bits

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >::block_bits = Arity * field_type::modulus_bits
staticconstexpr

◆ block_words

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

◆ digest_bits

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >::digest_bits = field_type::modulus_bits
staticconstexpr

◆ full_rounds

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >::full_rounds = 8
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::base_poseidon_policy< FieldType, Arity, PartRounds >::half_full_rounds = 4
staticconstexpr

◆ part_rounds

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

◆ state_bits

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >::state_bits = (Arity + 1) * field_type::modulus_bits
staticconstexpr

◆ state_words

template<typename FieldType , std::size_t Arity, std::size_t PartRounds>
constexpr static const std::size_t nil::crypto3::hashes::detail::base_poseidon_policy< FieldType, Arity, PartRounds >::state_words = (Arity + 1)
staticconstexpr

◆ word_bits

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

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