2 *****************************************************************************
3 * @author This file is part of libsnark, developed by SCIPR Lab
4 * and contributors (see AUTHORS).
5 * @copyright MIT license (see LICENSE file)
6 *****************************************************************************/
7 #ifndef R1CS_PCD_PARAMS_TCC_
8 #define R1CS_PCD_PARAMS_TCC_
13 template<typename FieldT>
14 r1cs_primary_input<FieldT> r1cs_pcd_compliance_predicate_primary_input<
15 FieldT>::as_r1cs_primary_input() const
17 return outgoing_message->as_r1cs_variable_assignment();
20 template<typename FieldT>
21 r1cs_auxiliary_input<FieldT> r1cs_pcd_compliance_predicate_auxiliary_input<
22 FieldT>::as_r1cs_auxiliary_input(const std::vector<size_t> &
23 incoming_message_payload_lengths) const
25 const size_t arity = incoming_messages.size();
27 r1cs_auxiliary_input<FieldT> result;
28 result.emplace_back(FieldT(arity));
30 const size_t max_arity = incoming_message_payload_lengths.size();
31 assert(arity <= max_arity);
33 for (size_t i = 0; i < arity; ++i) {
34 const r1cs_variable_assignment<FieldT> msg_as_r1cs_va =
35 incoming_messages[i]->as_r1cs_variable_assignment();
37 msg_as_r1cs_va.size() == (1 + incoming_message_payload_lengths[i]));
39 result.end(), msg_as_r1cs_va.begin(), msg_as_r1cs_va.end());
42 /* pad with dummy messages of appropriate size */
43 for (size_t i = arity; i < max_arity; ++i) {
45 result.size() + (1 + incoming_message_payload_lengths[i]),
49 const r1cs_variable_assignment<FieldT> local_data_as_r1cs_va =
50 local_data->as_r1cs_variable_assignment();
53 local_data_as_r1cs_va.begin(),
54 local_data_as_r1cs_va.end());
55 result.insert(result.end(), witness.begin(), witness.end());
60 } // namespace libsnark
62 #endif // R1CS_PCD_PARAMS_TCC_