1#include <gtest/gtest.h>
25 std::string longer_string =
"This is a test string of length 34";
27 std::vector<size_t> test_lengths({ 0, 1, 32, 33 });
28 for (
size_t i : test_lengths) {
30 auto message_string = longer_string.substr(0, i);
37 schnorr_construct_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(message_string,
40 bool first_result = schnorr_verify_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(
41 message_string, account.
public_key, signature);
42 EXPECT_EQ(first_result,
true);
51 info(
"num gates = ",
builder.get_estimated_num_finalized_gates());
53 EXPECT_EQ(result,
true);
61TEST(stdlib_schnorr, verify_signature_failure)
64 std::string message_string =
"This is a test string of length 34";
78 schnorr_construct_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(message_string, account1);
81 bool native_result = schnorr_verify_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(
82 message_string, account2.
public_key, signature);
83 EXPECT_EQ(native_result,
false);
93 info(
"num gates = ",
builder.get_estimated_num_finalized_gates());
96 EXPECT_EQ(verification_result,
false);
103TEST(stdlib_schnorr, schnorr_signature_verification_result)
105 std::string longer_string =
"This is a test string of length 34";
114 schnorr_construct_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(longer_string, account);
116 bool first_result = schnorr_verify_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(
117 longer_string, account.
public_key, signature);
118 EXPECT_EQ(first_result,
true);
125 bool_ct signature_result = schnorr_signature_verification_result(message, pub_key, sig);
128 info(
"num gates = ",
builder.get_estimated_num_finalized_gates());
131 EXPECT_EQ(result,
true);
138TEST(stdlib_schnorr, signature_verification_result_failure)
141 std::string message_string =
"This is a test string of length 34";
155 schnorr_construct_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(message_string, account1);
158 bool native_result = schnorr_verify_signature<Blake2sHasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(
159 message_string, account2.
public_key, signature);
160 EXPECT_EQ(native_result,
false);
168 bool_ct signature_result = schnorr_signature_verification_result(message, pub_key2_ct, sig);
171 info(
"num gates = ",
builder.get_estimated_num_finalized_gates());
174 EXPECT_EQ(verification_result,
true);
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
static constexpr element one
Implements boolean logic in-circuit.
Represents a dynamic array of bytes in-circuit.
cycle_group represents a group Element of the proving system's embedded curve i.e....
bool schnorr_verify_signature(const std::string &message, const typename G1::affine_element &public_key, const schnorr_signature &sig)
schnorr_signature_bits< C > schnorr_convert_signature(C *context, const crypto::schnorr_signature &signature)
Instantiate a witness containing the signature (s, e) as a quadruple of field_t elements (s_lo,...
Entry point for Barretenberg command-line interface.
TEST(MegaCircuitBuilder, CopyConstructor)
UltraCircuitBuilder_< UltraExecutionTraceBlocks > UltraCircuitBuilder
stdlib::witness_t< Builder > witness_ct
UltraCircuitBuilder Builder
G1::affine_element public_key
static field random_element(numeric::RNG *engine=nullptr) noexcept