mirror of
https://github.com/data61/MP-SPDZ.git
synced 2026-01-09 13:37:58 -05:00
63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#include "OTTripleSetup.h"
|
|
|
|
void OTTripleSetup::setup()
|
|
{
|
|
timeval baseOTstart, baseOTend;
|
|
gettimeofday(&baseOTstart, NULL);
|
|
|
|
G.ReSeed();
|
|
for (int i = 0; i < nbase; i++)
|
|
{
|
|
base_receiver_inputs[i] = G.get_uchar() & 1;
|
|
}
|
|
//baseReceiverInput.randomize(G);
|
|
|
|
for (int i = 0; i < nparties - 1; i++)
|
|
{
|
|
baseOTs[i]->set_receiver_inputs(base_receiver_inputs);
|
|
baseOTs[i]->exec_base(false);
|
|
baseSenderInputs[i] = baseOTs[i]->sender_inputs;
|
|
baseReceiverOutputs[i] = baseOTs[i]->receiver_outputs;
|
|
}
|
|
gettimeofday(&baseOTend, NULL);
|
|
#ifdef VERBOSE
|
|
double basetime = timeval_diff(&baseOTstart, &baseOTend);
|
|
cout << "\t\tBaseTime: " << basetime/1000000 << endl << flush;
|
|
#endif
|
|
|
|
for (size_t i = 0; i < baseOTs.size(); i++)
|
|
{
|
|
delete baseOTs[i];
|
|
}
|
|
|
|
// Receiver send something to force synchronization
|
|
// (since Sender finishes baseOTs before Receiver)
|
|
}
|
|
|
|
void OTTripleSetup::close_connections()
|
|
{
|
|
for (size_t i = 0; i < players.size(); i++)
|
|
{
|
|
delete players[i];
|
|
}
|
|
}
|
|
|
|
OTTripleSetup OTTripleSetup::get_fresh()
|
|
{
|
|
OTTripleSetup res = *this;
|
|
for (int i = 0; i < nparties - 1; i++)
|
|
{
|
|
BaseOT bot(nbase, 128, 0);
|
|
bot.sender_inputs = baseSenderInputs[i];
|
|
bot.receiver_outputs = baseReceiverOutputs[i];
|
|
bot.set_seeds();
|
|
bot.extend_length();
|
|
baseSenderInputs[i] = bot.sender_inputs;
|
|
baseReceiverOutputs[i] = bot.receiver_outputs;
|
|
bot.extend_length();
|
|
res.baseSenderInputs[i] = bot.sender_inputs;
|
|
res.baseReceiverOutputs[i] = bot.receiver_outputs;
|
|
}
|
|
return res;
|
|
}
|