nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group > Struct Template Reference

Pedersen hash. More...

#include <pedersen.hpp>

+ Collaboration diagram for nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >:

Classes

class  internal_accumulator_type
 

Public Types

using base_point_generator = find_group_hash< params, base_point_generator_hash, group_type >
 
using base_point_generator_hash = BasePointGeneratorHash
 
using curve_type = typename group_type::curve_type
 
using digest_type = group_value_type
 
using group_type = Group
 
using group_value_type = typename group_type::value_type
 
using params = Params
 
using result_type = digest_type
 

Static Public Member Functions

static void init_accumulator (internal_accumulator_type &acc)
 
static result_type process (internal_accumulator_type &acc)
 
template<typename InputRange , typename std::enable_if< std::is_same< bool, typename std::iterator_traits< typename InputRange::iterator >::value_type >::value, bool >::type = true>
static void update (internal_accumulator_type &acc, const InputRange &range)
 
template<typename InputIterator , typename std::enable_if< std::is_same< bool, typename std::iterator_traits< InputIterator >::value_type >::value, bool >::type = true>
static void update (internal_accumulator_type &acc, InputIterator first, InputIterator last)
 

Static Public Attributes

static constexpr std::size_t chunk_bits = 3
 
static constexpr std::size_t chunks_per_base_point
 See definition of c in https://zips.z.cash/protocol/protocol.pdf#concretepedersenhash. More...
 

Detailed Description

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
struct nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >

Pedersen hash.

Template Parameters
Group
Params

Member Typedef Documentation

◆ base_point_generator

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::base_point_generator = find_group_hash<params, base_point_generator_hash, group_type>

◆ base_point_generator_hash

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::base_point_generator_hash = BasePointGeneratorHash

◆ curve_type

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::curve_type = typename group_type::curve_type

◆ digest_type

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::digest_type = group_value_type

◆ group_type

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::group_type = Group

◆ group_value_type

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::group_value_type = typename group_type::value_type

◆ params

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::params = Params

◆ result_type

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
using nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::result_type = digest_type

Member Function Documentation

◆ init_accumulator()

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
static void nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::init_accumulator ( internal_accumulator_type acc)
inlinestatic

◆ process()

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
static result_type nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::process ( internal_accumulator_type acc)
inlinestatic

◆ update() [1/2]

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
template<typename InputRange , typename std::enable_if< std::is_same< bool, typename std::iterator_traits< typename InputRange::iterator >::value_type >::value, bool >::type = true>
static void nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::update ( internal_accumulator_type acc,
const InputRange &  range 
)
inlinestatic

◆ update() [2/2]

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
template<typename InputIterator , typename std::enable_if< std::is_same< bool, typename std::iterator_traits< InputIterator >::value_type >::value, bool >::type = true>
static void nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::update ( internal_accumulator_type acc,
InputIterator  first,
InputIterator  last 
)
inlinestatic

Member Data Documentation

◆ chunk_bits

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
constexpr std::size_t nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::chunk_bits = 3
staticconstexpr

◆ chunks_per_base_point

template<typename Params = find_group_hash_default_params, typename BasePointGeneratorHash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
constexpr std::size_t nil::crypto3::hashes::pedersen_to_point< Params, BasePointGeneratorHash, Group >::chunks_per_base_point
staticconstexpr
Initial value:
=
detail::get_chunks_per_base_point<typename curve_type::scalar_field_type>(chunk_bits)
static constexpr std::size_t chunk_bits
Definition: hash/include/nil/crypto3/hash/pedersen.hpp:68

See definition of c in https://zips.z.cash/protocol/protocol.pdf#concretepedersenhash.


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