From 505d4838c18394e8bb87bc5bae5a8b9cc00d65ad Mon Sep 17 00:00:00 2001 From: Marcel Keller Date: Fri, 1 Jul 2022 12:18:30 +1000 Subject: [PATCH] Parameter for ring size in fake preprocessing. --- Utils/Fake-Offline.cpp | 51 +++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/Utils/Fake-Offline.cpp b/Utils/Fake-Offline.cpp index 823c318b..c1d14d20 100644 --- a/Utils/Fake-Offline.cpp +++ b/Utils/Fake-Offline.cpp @@ -61,6 +61,9 @@ public: { } + template + void generate_ring(); + template void make_with_mac_key(int nplayers, int default_num, bool zero); template @@ -394,7 +397,7 @@ int main(int argc, const char** argv) 0, // Required? 1, // Number of args expected. 0, // Delimiter if expecting multiple args. - "Bit length of GF(p) field (default: 128)", // Help description. + "Bit length of GF(p) field (default: 128) and Z_2^k rings (default: 64)", // Help description. "-lgp", // Flag token. "--lgp" // Flag token. ); @@ -729,22 +732,12 @@ int FakeParams::generate() // replicated secret sharing only for three parties if (nplayers == 3) { - make_bits>({}, nplayers, nbitsp, zero); - make_basic>({}, nplayers, default_num, - zero); - make_basic>({}, nplayers, - default_num, zero); - make_with_mac_key>(nplayers, - default_num, zero); - make_mult_triples({}, nplayers, ntrip2, zero, prep_data_prefix); make_bits({}, nplayers, nbits2, zero); } else if (nplayers == 4) make_basic>({}, nplayers, default_num, zero); - make_basic>>({}, nplayers, default_num, zero); - make_basic>>({}, nplayers, default_num, zero); make_minimal({}, nplayers, default_num, zero); make_mult_triples({}, nplayers, default_num, zero, prep_data_prefix); @@ -778,6 +771,22 @@ int FakeParams::generate() generate_field(T::clear::prime_field); generate_field(true_type()); + // default + generate_ring<64>(); + + // reuse lgp for simplified interface + switch (lgp) + { + case 64: + break; +#define X(L) case L: generate_ring(); break; + X(128) X(192) X(256) + default: + cerr << "Not compiled for " << lgp << "-bit rings." << endl << "Add 'X(" + << lgp << "') to line " << (__LINE__ - 2) << " in " << __FILE__ << endl; + exit(1); + } + return 0; } @@ -803,3 +812,23 @@ void FakeParams::generate_field(true_type) default_num, zero); } } + +template +inline void FakeParams::generate_ring() +{ + if (nplayers == 3) + { + make_bits>({}, nplayers, default_num, zero); + make_basic>({}, nplayers, default_num, + zero); + make_basic>({}, nplayers, + default_num, zero); + make_with_mac_key>(nplayers, + default_num, zero); + } + else if (nplayers == 4) + make_basic>({}, nplayers, default_num, zero); + + make_basic>>({}, nplayers, default_num, zero); + make_basic>>({}, nplayers, default_num, zero); +}