27 template<
typename ppT,
typename snarkT>
30 ppT::init_public_params();
31 libff::inhibit_profiling_info =
true;
32 libff::inhibit_profiling_counters =
true;
34 typename snarkT::verification_key verification_key;
37 snarkT::verification_key_read_bytes(verification_key, in_s);
40 libsnark::r1cs_primary_input<libff::Fr<ppT>> primary_input;
47 typename snarkT::proof proof;
50 snarkT::proof_read_bytes(proof, in_s);
54 std::cout <<
"verification failed.\n";
63 boost::program_options::options_description &options,
64 boost::program_options::options_description &all_options,
65 boost::program_options::positional_options_description &pos)
override
69 all_options.add(options).add_options()(
70 "vk_file", po::value<std::string>(),
"Verification key file");
71 all_options.add_options()(
73 po::value<std::string>(),
74 "Primary input file");
75 all_options.add_options()(
76 "proof_file", po::value<std::string>(),
"Proof file");
78 pos.add(
"vk_file", 1);
79 pos.add(
"primary_input_file", 1);
80 pos.add(
"proof_file", 1);
84 const boost::program_options::variables_map &vm)
override
88 if (vm.count(
"vk_file") == 0) {
89 throw po::error(
"vk_file not specified");
91 if (vm.count(
"primary_input_file") == 0) {
92 throw po::error(
"primary_input_file not specified");
94 if (vm.count(
"proof_file") == 0) {
95 throw po::error(
"proof_file not specified");
98 vk_file = vm[
"vk_file"].as<std::string>();
99 proof_file = vm[
"proof_file"].as<std::string>();
105 std::cout <<
"Usage:\n"
108 <<
" verify [vk_file] [primary_input_file] [proof_file]\n";
119 "verify",
"Verify proof against verification key and primary input");