barretenberg
Loading...
Searching...
No Matches
schnorr_verify.hpp
1#pragma once
2#include "barretenberg/dsl/types.hpp"
3#include <vector>
4
5namespace acir_format {
6
8 // This is just a bunch of bytes
9 // which need to be interpreted as a string
10 // Note this must be a bunch of bytes
11 std::vector<uint32_t> message;
12
13 // This is the supposed public key which signed the
14 // message, giving rise to the signature
15 uint32_t public_key_x;
16 uint32_t public_key_y;
17
18 // This is the result of verifying the signature
19 uint32_t result;
20
21 // This is the computed signature
22 //
23 std::vector<uint32_t> signature;
24
25 friend bool operator==(SchnorrConstraint const& lhs, SchnorrConstraint const& rhs) = default;
26};
27
28template <typename Builder> void create_schnorr_verify_constraints(Builder& builder, const SchnorrConstraint& input);
29
30template <typename B> inline void read(B& buf, SchnorrConstraint& constraint)
31{
32 using serialize::read;
33 read(buf, constraint.message);
34 read(buf, constraint.signature);
35 read(buf, constraint.public_key_x);
36 read(buf, constraint.public_key_y);
37 read(buf, constraint.result);
38}
39
40template <typename B> inline void write(B& buf, SchnorrConstraint const& constraint)
41{
42 using serialize::write;
43 write(buf, constraint.message);
44 write(buf, constraint.signature);
45 write(buf, constraint.public_key_x);
46 write(buf, constraint.public_key_y);
47 write(buf, constraint.result);
48}
49
50} // namespace acir_format
Definition: ultra_circuit_builder.hpp:31
Definition: schnorr_verify.hpp:7