Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
ecdsa_constraints.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
12#include <vector>
13
14namespace acir_format {
15
16using namespace bb;
17
36 // The byte representation of the hashed message.
37 std::array<uint32_t, 32> hashed_message;
38
39 // The signature
40 std::array<uint32_t, 64> signature;
41
42 // The public key against which the signature must be verified.
43 // Since Fr does not have enough bits to represent the prime field in
44 // secp256k1 or secp256r1, a byte array is used.
45 std::array<uint32_t, 32> pub_x_indices;
46 std::array<uint32_t, 32> pub_y_indices;
47
48 // Predicate indicating whether the constraint should be disabled:
49 // - true: the constraint is valid
50 // - false: the constraint is disabled, i.e it must not fail and can return whatever.
52
53 // Expected result of signature verification
54 uint32_t result;
55
56 // For serialization, update with any new fields
58 friend bool operator==(EcdsaConstraint const& lhs, EcdsaConstraint const& rhs) = default;
59};
60
61template <typename Curve>
62void create_ecdsa_verify_constraints(typename Curve::Builder& builder,
63 const EcdsaConstraint& input,
64 bool has_valid_witness_assignments = true);
65
66template <typename Curve>
67void create_dummy_ecdsa_constraint(typename Curve::Builder& builder,
68 const std::vector<stdlib::field_t<typename Curve::Builder>>& hashed_message_fields,
69 const std::vector<stdlib::field_t<typename Curve::Builder>>& r_fields,
70 const std::vector<stdlib::field_t<typename Curve::Builder>>& s_fields,
71 const std::vector<stdlib::field_t<typename Curve::Builder>>& pub_x_fields,
72 const std::vector<stdlib::field_t<typename Curve::Builder>>& pub_y_fields,
74
75} // namespace acir_format
AluTraceBuilder builder
Definition alu.test.cpp:123
void create_ecdsa_verify_constraints(typename Curve::Builder &builder, const EcdsaConstraint &input, bool has_valid_witness_assignments)
Create constraints to verify an ECDSA signature.
void create_dummy_ecdsa_constraint(typename Curve::Builder &builder, const std::vector< stdlib::field_t< typename Curve::Builder > > &hashed_message_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &r_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &s_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &pub_x_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &pub_y_fields, const stdlib::field_t< typename Curve::Builder > &result_field)
Generate dummy ECDSA constraints when the builder doesn't have witnesses.
Entry point for Barretenberg command-line interface.
MSGPACK_FIELDS(hashed_message, signature, pub_x_indices, pub_y_indices, predicate, result)
std::array< uint32_t, 32 > pub_x_indices
std::array< uint32_t, 32 > hashed_message
friend bool operator==(EcdsaConstraint const &lhs, EcdsaConstraint const &rhs)=default
WitnessOrConstant< bb::fr > predicate
std::array< uint32_t, 64 > signature
std::array< uint32_t, 32 > pub_y_indices