3#include "barretenberg/crypto/ecdsa/ecdsa.hpp"
4#include "barretenberg/crypto/hashers/hashers.hpp"
5#include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp"
6#include "barretenberg/stdlib/encryption/ecdsa/ecdsa.hpp"
7#include "barretenberg/stdlib/encryption/ecdsa/ecdsa_impl.hpp"
8#include "barretenberg/stdlib/primitives/bigfield/bigfield.hpp"
9#include "barretenberg/stdlib/primitives/biggroup/biggroup.hpp"
10#include "barretenberg/stdlib/primitives/bool/bool.hpp"
11#include "barretenberg/stdlib/primitives/curves/secp256k1.hpp"
12#include "barretenberg/stdlib/primitives/field/field.hpp"
13#include "barretenberg/stdlib/primitives/witness/witness.hpp"
16using namespace stdlib;
27 static constexpr size_t NUM_PUBLIC_INPUTS = 6;
36 for (
size_t i = 0; i < NUM_PUBLIC_INPUTS; ++i) {
41 std::string message_string =
"goblin";
45 for (
size_t i = 0; i < NUM_PUBLIC_INPUTS; ++i) {
46 input_buffer[i].assert_equal(message[i]);
51 account.private_key = curve::fr::random_element();
52 account.public_key = curve::g1::one * account.private_key;
56 construct_signature<Sha256Hasher, typename curve::fq, typename curve::fr, typename curve::g1>(
57 message_string, account);
61 crypto::ecdsa::verify_signature<Sha256Hasher, typename curve::fq, typename curve::fr, typename curve::g1>(
62 message_string, account.public_key, signature);
64 throw_or_abort(
"[non circuit]: Sig verification failed");
68 typename curve::g1_bigfr_ct public_key = curve::g1_bigfr_ct::from_witness(&builder, account.public_key);
70 std::vector<uint8_t> rr(signature.r.begin(), signature.r.end());
71 std::vector<uint8_t> ss(signature.s.begin(), signature.s.end());
72 uint8_t vv = signature.v;
77 stdlib::uint8<Builder>(&builder, vv) };
92 signature_result.
must_imply(is_true,
"signature verification failed");
Definition: ecdsa_circuit.hpp:19
Definition: uint256.hpp:25
Definition: standard_circuit_builder.hpp:12
Definition: bigfield.hpp:17
void must_imply(const bool_t &other, std::string const &msg="bool_t::must_imply") const
Definition: bool.cpp:447
Definition: byte_array.hpp:9
Definition: biggroup.hpp:22
Definition: witness.hpp:51
Definition: widget.bench.cpp:13
Definition: secp256k1.hpp:12