/* * CutAndChooseMachine.cpp * */ #include "FHEOffline/CutAndChooseMachine.h" #include "FHEOffline/SimpleGenerator.h" CutAndChooseMachine::CutAndChooseMachine(int argc, const char** argv) { opt.add( "", // Default. 0, // Required? 0, // Number of args expected. 0, // Delimiter if expecting multiple args. "Use covert security (default: active; use -s for parameter)", // Help description. "-c", // Flag token. "--covert" // Flag token. ); parse_options(argc, argv); if (produce_inputs) { cerr << "Producing input tuples is not implemented" << endl; exit(1); } covert = opt.isSet("--covert"); if (not covert and sec != 40) throw runtime_error("active cut-and-choose only implemented for 40-bit security"); if (covert) generate_setup(COVERT_SPDZ2_SLACK); else generate_setup(ACTIVE_SPDZ2_SLACK); for (int i = 0; i < nthreads; i++) { if (use_gf2n) generators.push_back(new_generator(i)); else generators.push_back(new_generator(i)); } } template GeneratorBase* CutAndChooseMachine::new_generator(int i) { SimpleGenerator* generator = new SimpleGenerator(N, setup.part(), *this, i, data_type); if (covert) generator->EC.init(generator->P, setup.part().pk, sec, Full); else generator->EC.init(generator->P, setup.part().pk, Full, setup.part().FieldD, i); return generator; }