mirror of
https://github.com/data61/MP-SPDZ.git
synced 2026-01-10 22:17:57 -05:00
Fix bug in BMR with long secret values.
This commit is contained in:
@@ -20,13 +20,14 @@ int AndJob::run()
|
||||
int i_gate = 0;
|
||||
for (size_t i = start; i < end; i += 4)
|
||||
{
|
||||
GC::Secret<EvalRegister>& dest = S[args[i + 1]];
|
||||
for (int j = 0; j < args[i]; j++)
|
||||
{
|
||||
i_gate++;
|
||||
gate->init_inputs(gate_id + i_gate,
|
||||
ProgramParty::s().get_n_parties());
|
||||
dest.get_reg(j).eval(S[args[i + 2]].get_reg(j),
|
||||
int dl = GC::Clear::N_BITS;
|
||||
GC::Secret<EvalRegister>& dest = S[args[i + 1] + j / dl];
|
||||
dest.get_reg(j % dl).eval(S[args[i + 2] + j / dl].get_reg(j % dl),
|
||||
S[args[i + 3]].get_reg(0), *gate,
|
||||
ProgramParty::s().get_id(), (char*) prf_output, 0, 0, 0);
|
||||
gate++;
|
||||
|
||||
@@ -172,8 +172,12 @@ void EvalRegister::andrs(GC::Processor<GC::Secret<EvalRegister> >& processor,
|
||||
for (size_t j = 0; j < args.size(); j += 4)
|
||||
{
|
||||
AndJob& and_job = party.and_jobs[i_thread];
|
||||
GC::Secret<EvalRegister>& dest = processor.S[args[j + 1]];
|
||||
dest.resize_regs(args[j]);
|
||||
int dl = GC::Clear::N_BITS;
|
||||
for (int i = 0; i < args[j]; i += dl)
|
||||
{
|
||||
GC::Secret<EvalRegister>& dest = processor.S[args[j + 1] + i / dl];
|
||||
dest.resize_regs(min(args[j] - i, dl));
|
||||
}
|
||||
processor.complexity += args[j];
|
||||
for (int i = 0; i < args[j]; i++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user