31 std::string message_string =
"Instructions unclear, ask again later.";
34 std::vector<uint8_t> message_buffer(message_string.begin(), message_string.end());
44 ecdsa_construct_signature<Sha256Hasher, FqNative, FrNative, G1Native>(message_string, account);
47 std::array<uint8_t, 32> buffer_x;
48 std::array<uint8_t, 32> buffer_y;
49 FqNative::serialize_to_buffer(account.
public_key.x, &buffer_x[0]);
50 FqNative::serialize_to_buffer(account.
public_key.y, &buffer_y[0]);
53 size_t num_variables = 0;
55 std::array<uint32_t, 32> hashed_message_indices =
56 add_to_witness_and_track_indices<uint8_t, 32>(witness_values, std::span(hashed_message));
57 num_variables += hashed_message_indices.size();
59 std::array<uint32_t, 32> pub_x_indices =
60 add_to_witness_and_track_indices<uint8_t, 32>(witness_values, std::span(buffer_x));
61 num_variables += pub_x_indices.size();
63 std::array<uint32_t, 32> pub_y_indices =
64 add_to_witness_and_track_indices<uint8_t, 32>(witness_values, std::span(buffer_y));
65 num_variables += pub_y_indices.size();
67 std::array<uint32_t, 32> r_indices =
68 add_to_witness_and_track_indices<uint8_t, 32>(witness_values, std::span(signature.
r));
69 num_variables += r_indices.size();
71 std::array<uint32_t, 32> s_indices =
72 add_to_witness_and_track_indices<uint8_t, 32>(witness_values, std::span(signature.
s));
73 num_variables += s_indices.size();
75 uint32_t result_index =
static_cast<uint32_t
>(num_variables);
77 witness_values.emplace_back(result);
81 std::array<uint32_t, 64> signature_indices;
82 std::ranges::copy(r_indices, signature_indices.begin());
83 std::ranges::copy(s_indices, signature_indices.begin() + 32);
86 .signature = signature_indices,
87 .pub_x_indices = pub_x_indices,
88 .pub_y_indices = pub_y_indices,
89 .result = result_index };