Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
pedersen.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
7#pragma once
8
9#include "../generators/generator_data.hpp"
12namespace bb::crypto {
30template <typename Curve> class pedersen_hash_base {
31 public:
33 using Element = typename Curve::Element;
34 using Fq = typename Curve::BaseField;
35 using Fr = typename Curve::ScalarField;
36 using Group = typename Curve::Group;
38 inline static constexpr AffineElement length_generator =
39 get_precomputed_generators<Group, "pedersen_hash_length", 1>()[0];
40 static Fq hash(const std::vector<Fq>& inputs, GeneratorContext context = {});
41 static Fq hash_buffer(const std::vector<uint8_t>& input, GeneratorContext context = {});
42
43 private:
44 static std::vector<Fq> convert_buffer(const std::vector<uint8_t>& input);
45};
46
48} // namespace bb::crypto
Performs pedersen hashes!
Definition pedersen.hpp:30
typename crypto::GeneratorContext< Curve > GeneratorContext
Definition pedersen.hpp:37
typename Curve::BaseField Fq
Definition pedersen.hpp:34
static std::vector< Fq > convert_buffer(const std::vector< uint8_t > &input)
Converts input uint8_t buffers into vector of field elements. Used to hash the Transcript in a SNARK-...
Definition pedersen.cpp:23
static Fq hash_buffer(const std::vector< uint8_t > &input, GeneratorContext context={})
Given an arbitrary length of bytes, convert them to fields and hash the result using the default gene...
Definition pedersen.cpp:88
typename Curve::ScalarField Fr
Definition pedersen.hpp:35
static constexpr AffineElement length_generator
Definition pedersen.hpp:38
typename Curve::Group Group
Definition pedersen.hpp:36
typename Curve::AffineElement AffineElement
Definition pedersen.hpp:32
typename Curve::Element Element
Definition pedersen.hpp:33
static Fq hash(const std::vector< Fq > &inputs, GeneratorContext context={})
Given a vector of fields, generate a pedersen hash using generators from context.
Definition pedersen.cpp:78
typename Group::element Element
Definition grumpkin.hpp:55
typename grumpkin::g1 Group
Definition grumpkin.hpp:54
typename Group::affine_element AffineElement
Definition grumpkin.hpp:56
StrictMock< MockContext > context
constexpr std::span< const typename Group::affine_element > get_precomputed_generators()
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13