barretenberg
Loading...
Searching...
No Matches
pedersen.hpp
1#pragma once
2
3#include "../generators/generator_data.hpp"
4#include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp"
5namespace crypto {
23template <typename Curve> class pedersen_hash_base {
24 public:
25 using AffineElement = typename Curve::AffineElement;
26 using Element = typename Curve::Element;
27 using Fq = typename Curve::BaseField;
28 using Fr = typename Curve::ScalarField;
29 using Group = typename Curve::Group;
30 using GeneratorContext = typename crypto::GeneratorContext<Curve>;
31 inline static constexpr AffineElement length_generator = Group::derive_generators("pedersen_hash_length", 1)[0];
32 static Fq hash(const std::vector<Fq>& inputs, GeneratorContext context = {});
33 static Fq hash_buffer(const std::vector<uint8_t>& input, GeneratorContext context = {});
34
35 private:
36 static std::vector<Fq> convert_buffer(const std::vector<uint8_t>& input);
37};
38
39extern template class pedersen_hash_base<curve::Grumpkin>;
41} // namespace crypto
Performs pedersen hashes!
Definition: pedersen.hpp:23
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:59
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:69
Definition: aes128.cpp:9
Definition: generator_data.hpp:133