nil::crypto3::hashes::find_group_hash< Params, Hash, Group > Struct Template Reference

Hashing to elliptic curve Jubjub according to FindGroupHash Zcash algorithm https://zips.z.cash/protocol/protocol.pdf#concretegrouphashjubjub. More...

#include <find_group_hash.hpp>

+ Collaboration diagram for nil::crypto3::hashes::find_group_hash< Params, Hash, Group >:

Public Types

using curve_type = typename group_type::curve_type
 
using group_type = Group
 
using group_value_type = typename group_type::value_type
 
using hash_type = Hash
 
using internal_accumulator_type = accumulator_set< hash_type >
 
using params = Params
 
using result_type = group_value_type
 

Static Public Member Functions

static void init_accumulator (internal_accumulator_type &acc)
 
static result_type process (internal_accumulator_type &acc)
 
template<typename InputRange >
static void update (internal_accumulator_type &acc, const InputRange &range)
 
template<typename InputIterator >
static void update (internal_accumulator_type &acc, InputIterator first, InputIterator last)
 

Static Public Attributes

static std::vector< std::uint8_t > urs
 

Detailed Description

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >

Hashing to elliptic curve Jubjub according to FindGroupHash Zcash algorithm https://zips.z.cash/protocol/protocol.pdf#concretegrouphashjubjub.

Template Parameters
Group
Params

Member Typedef Documentation

◆ curve_type

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::curve_type = typename group_type::curve_type

◆ group_type

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::group_type = Group

◆ group_value_type

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::group_value_type = typename group_type::value_type

◆ hash_type

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::hash_type = Hash

◆ internal_accumulator_type

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::internal_accumulator_type = accumulator_set<hash_type>

◆ params

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::params = Params

◆ result_type

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::result_type = group_value_type

Member Function Documentation

◆ init_accumulator()

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::init_accumulator ( internal_accumulator_type acc)
inlinestatic

◆ process()

template<typename Params = find_group_hash_default_params, typename Hash = 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::find_group_hash< Params, Hash, Group >::process ( internal_accumulator_type acc)
inlinestatic

◆ update() [1/2]

template<typename Params = find_group_hash_default_params, typename Hash = 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 >
static void nil::crypto3::hashes::find_group_hash< Params, Hash, Group >::update ( internal_accumulator_type acc,
const InputRange &  range 
)
inlinestatic

◆ update() [2/2]

template<typename Params = find_group_hash_default_params, typename Hash = 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 >
static void nil::crypto3::hashes::find_group_hash< Params, Hash, Group >::update ( internal_accumulator_type acc,
InputIterator  first,
InputIterator  last 
)
inlinestatic

Member Data Documentation

◆ urs

template<typename Params = find_group_hash_default_params, typename Hash = sha2<256>, typename Group = algebra::curves::jubjub::template g1_type< nil::crypto3::algebra::curves::coordinates::affine, nil::crypto3::algebra::curves::forms::twisted_edwards>>
std::vector<std::uint8_t> nil::crypto3::hashes::find_group_hash< Params, Hash, Group >::urs
inlinestatic
Initial value:
= {
0x30, 0x39, 0x36, 0x62, 0x33, 0x36, 0x61, 0x35, 0x38, 0x30, 0x34, 0x62, 0x66, 0x61, 0x63, 0x65,
0x66, 0x31, 0x36, 0x39, 0x31, 0x65, 0x31, 0x37, 0x33, 0x63, 0x33, 0x36, 0x36, 0x61, 0x34, 0x37,
0x66, 0x66, 0x35, 0x62, 0x61, 0x38, 0x34, 0x61, 0x34, 0x34, 0x66, 0x32, 0x36, 0x64, 0x64, 0x64,
0x37, 0x65, 0x38, 0x64, 0x39, 0x66, 0x37, 0x39, 0x64, 0x35, 0x62, 0x34, 0x32, 0x64, 0x66, 0x30}

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