71 switch (invalid_witness_target) {
74 for (
size_t idx = 0; idx < 32; idx++) {
80 for (
size_t idx = 0; idx < 32; idx++) {
86 for (
size_t idx = 32; idx < 64; idx++) {
92 for (
size_t idx = 32; idx < 64; idx++) {
108 return { ecdsa_constraints, witness_values };
116 std::string message_string =
"Instructions unclear, ask again later.";
119 std::vector<uint8_t> message_buffer(message_string.begin(), message_string.end());
129 ecdsa_construct_signature<Sha256Hasher, FqNative, FrNative, G1Native>(message_string, account);
132 std::array<uint8_t, 32> buffer_x;
133 std::array<uint8_t, 32> buffer_y;
134 FqNative::serialize_to_buffer(account.
public_key.x, &buffer_x[0]);
135 FqNative::serialize_to_buffer(account.
public_key.y, &buffer_y[0]);
138 std::array<uint32_t, 32> hashed_message_indices =
139 add_to_witness_and_track_indices<std::span<uint8_t>, 32>(witness_values, std::span(hashed_message));
141 std::array<uint32_t, 32> pub_x_indices =
142 add_to_witness_and_track_indices<std::span<uint8_t>, 32>(witness_values, std::span(buffer_x));
144 std::array<uint32_t, 32> pub_y_indices =
145 add_to_witness_and_track_indices<std::span<uint8_t>, 32>(witness_values, std::span(buffer_y));
147 std::array<uint32_t, 32> r_indices =
148 add_to_witness_and_track_indices<std::span<uint8_t>, 32>(witness_values, std::span(signature.
r));
150 std::array<uint32_t, 32> s_indices =
151 add_to_witness_and_track_indices<std::span<uint8_t>, 32>(witness_values, std::span(signature.
s));
158 std::array<uint32_t, 64> signature_indices;
159 std::ranges::copy(r_indices, signature_indices.begin());
160 std::ranges::copy(s_indices, signature_indices.begin() + 32);
163 .hashed_message = hashed_message_indices,
164 .signature = signature_indices,
165 .pub_x_indices = pub_x_indices,
166 .pub_y_indices = pub_y_indices,
168 .result = result_index };