26 template<
typename ppT,
typename snarkT>
29 ppT::init_public_params();
30 libff::inhibit_profiling_info =
true;
31 libff::inhibit_profiling_counters =
true;
33 typename snarkT::keypair keypair;
36 snarkT::keypair_read_bytes(keypair, in_s);
41 snarkT::verification_key_write_bytes(keypair.vk, out_s);
46 snarkT::proving_key_write_bytes(keypair.pk, out_s);
54 boost::program_options::options_description &options,
55 boost::program_options::options_description &all_options,
56 boost::program_options::positional_options_description &pos)
override
60 options.add_options()(
62 po::value<std::string>(),
63 "Verification key file (optional)")(
65 po::value<std::string>(),
66 "Proving key file (optional)");
68 all_options.add(options).add_options()(
69 "keypair-file,k", po::value<std::string>(),
"Keypair file");
70 pos.add(
"keypair-file", 1);
74 const boost::program_options::variables_map &vm)
override
78 if (vm.count(
"keypair-file") == 0) {
79 throw po::error(
"keypair file not specified");
83 vk_file = vm.count(
"vk-file") ? vm[
"vk-file"].as<std::string>() :
"";
84 pk_file = vm.count(
"pk-file") ? vm[
"pk-file"].as<std::string>() :
"";
87 throw po::error(
"no VK or PK file specified");
93 std::cout <<
"Usage:\n"
95 << argv0 <<
" split-keypair <options> [keypair_file]\n";
107 "Extract the verification key / proving key from a keypair.");