/* * ReplicatedInput.h * */ #ifndef PROCESSOR_REPLICATEDINPUT_H_ #define PROCESSOR_REPLICATEDINPUT_H_ #include "Input.h" #include "Replicated.h" template class PrepLessInput : public InputBase { protected: SubProcessor* processor; vector shares; size_t i_share; public: PrepLessInput(SubProcessor* proc) : InputBase(proc ? &proc->Proc : 0), processor(proc), i_share(0) {} virtual ~PrepLessInput() {} void start(int player, int n_inputs); void stop(int player, vector targets); virtual void reset(int player) = 0; virtual void add_mine(const typename T::clear& input) = 0; virtual void add_other(int player) = 0; virtual void send_mine() = 0; virtual void finalize_other(int player, T& target, octetStream& o) = 0; T finalize_mine(); }; template class ReplicatedInput : public PrepLessInput { SubProcessor* proc; Player& P; vector os; SeededPRNG secure_prng; ReplicatedBase protocol; public: ReplicatedInput(SubProcessor& proc) : ReplicatedInput(&proc, proc.P) { } ReplicatedInput(SubProcessor& proc, ReplicatedMC& MC) : ReplicatedInput(proc) { (void) MC; } ReplicatedInput(SubProcessor* proc, Player& P) : PrepLessInput(proc), proc(proc), P(P), protocol(P) { assert(T::length == 2); } void reset(int player); void add_mine(const typename T::clear& input); void add_other(int player); void send_mine(); void finalize_other(int player, T& target, octetStream& o); }; #endif /* PROCESSOR_REPLICATEDINPUT_H_ */