barretenberg
Loading...
Searching...
No Matches
ecdsa.hpp
1#pragma once
2
3#include "../../primitives/byte_array/byte_array.hpp"
4#include "../../primitives/circuit_builders/circuit_builders_fwd.hpp"
5#include "../../primitives/uint/uint.hpp"
6#include "barretenberg/crypto/ecdsa/ecdsa.hpp"
7namespace proof_system::plonk {
8namespace stdlib {
9namespace ecdsa {
10
11template <typename Builder> struct signature {
14 stdlib::uint8<Builder> v;
15};
16
17template <typename Builder, typename Curve, typename Fq, typename Fr, typename G1>
18bool_t<Builder> verify_signature(const stdlib::byte_array<Builder>& message,
19 const G1& public_key,
20 const signature<Builder>& sig);
21
22template <typename Builder, typename Curve, typename Fq, typename Fr, typename G1>
23bool_t<Builder> verify_signature_noassert(const stdlib::byte_array<Builder>& message,
24 const G1& public_key,
25 const signature<Builder>& sig);
26template <typename Builder, typename Curve, typename Fq, typename Fr, typename G1>
27bool_t<Builder> verify_signature_prehashed_message_noassert(const stdlib::byte_array<Builder>& hashed_message,
28 const G1& public_key,
29 const signature<Builder>& sig);
30
31template <typename Builder> static signature<Builder> from_witness(Builder* ctx, const crypto::ecdsa::signature& input)
32{
33 std::vector<uint8_t> r_vec(std::begin(input.r), std::end(input.r));
34 std::vector<uint8_t> s_vec(std::begin(input.s), std::end(input.s));
35 stdlib::byte_array<Builder> r(ctx, r_vec);
36 stdlib::byte_array<Builder> s(ctx, s_vec);
37 stdlib::uint8<Builder> v(ctx, input.v);
39 out.r = r;
40 out.s = s;
41 out.v = v;
42 return out;
43}
44
45} // namespace ecdsa
46} // namespace stdlib
47} // namespace proof_system::plonk
48
49#include "./ecdsa_impl.hpp"
Definition: standard_circuit_builder.hpp:12
Definition: byte_array.hpp:9
Definition: widget.bench.cpp:13
Definition: ecdsa.hpp:20