|
@@ -1,124 +1,95 @@
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
void refresh_blinds(int8_t flags[], DB_t standard_basis_vector[], DB_t finalCW, bool party, size_t db_nitems, size_t rotate_by = 0)
|
|
|
-{
|
|
|
-
|
|
|
- DB_t tmp = 0;
|
|
|
-
|
|
|
- for(size_t j = 0; j < db_nitems; ++j)
|
|
|
- {
|
|
|
- if(flags[(j + rotate_by) % db_nitems] != 0)
|
|
|
- {
|
|
|
- tmp = finalCW;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- tmp = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if(party) updated_blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] - tmp;
|
|
|
- if(!party) updated_blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] + tmp;
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+{
|
|
|
+ DB_t tmp = 0;
|
|
|
+ for(size_t j = 0; j < db_nitems; ++j)
|
|
|
+ {
|
|
|
+ tmp = (flags[(j + rotate_by) % db_nitems] != 0) ? finalCW : 0;
|
|
|
+
|
|
|
+ // if(flags[(j + rotate_by) % db_nitems] != 0)
|
|
|
+ // {
|
|
|
+ // tmp = finalCW;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // tmp = 0;
|
|
|
+ // }
|
|
|
+ if(party) updated_blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] - tmp;
|
|
|
+ if(!party) updated_blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] + tmp;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
-void get_refresh_correction_words (tcp::socket& sb, DB_t one_shareA, DB_t one_shareB,
|
|
|
- DB_t one_shareC, DB_t& CW0, DB_t& CW1, DB_t& CW2, DB_t value)
|
|
|
-{
|
|
|
-
|
|
|
- DB_t tmp0 = value + one_shareA;
|
|
|
+// void get_refresh_correction_words (tcp::socket& sb, DB_t one_shareA, DB_t one_shareB, DB_t one_shareC, DB_t& CW0, DB_t& CW1, DB_t& CW2, DB_t value)
|
|
|
+// {
|
|
|
+
|
|
|
+// DB_t tmp0 = value + one_shareA;
|
|
|
|
|
|
- write(sb, boost::asio::buffer(&tmp0, sizeof(tmp0)));
|
|
|
- read(sb, boost::asio::buffer(&CW0, sizeof(CW0)));
|
|
|
- CW0 = CW0 + tmp0;
|
|
|
+// write(sb, boost::asio::buffer(&tmp0, sizeof(tmp0)));
|
|
|
+// read(sb, boost::asio::buffer(&CW0, sizeof(CW0)));
|
|
|
+// CW0 = CW0 + tmp0;
|
|
|
|
|
|
- DB_t tmp1 = value + one_shareB;
|
|
|
+// DB_t tmp1 = value + one_shareB;
|
|
|
|
|
|
- write(sb, boost::asio::buffer(&tmp1, sizeof(tmp1)));
|
|
|
- read(sb, boost::asio::buffer(&CW1, sizeof(CW1)));
|
|
|
- CW1 = CW1 + tmp1;
|
|
|
+// write(sb, boost::asio::buffer(&tmp1, sizeof(tmp1)));
|
|
|
+// read(sb, boost::asio::buffer(&CW1, sizeof(CW1)));
|
|
|
+// CW1 = CW1 + tmp1;
|
|
|
|
|
|
- DB_t tmp2 = value + one_shareC;
|
|
|
+// DB_t tmp2 = value + one_shareC;
|
|
|
|
|
|
- write(sb, boost::asio::buffer(&tmp2, sizeof(tmp2)));
|
|
|
- read(sb, boost::asio::buffer(&CW2, sizeof(CW2)));
|
|
|
+// write(sb, boost::asio::buffer(&tmp2, sizeof(tmp2)));
|
|
|
+// read(sb, boost::asio::buffer(&CW2, sizeof(CW2)));
|
|
|
|
|
|
- CW2 = CW2 + tmp2;
|
|
|
-}
|
|
|
+// CW2 = CW2 + tmp2;
|
|
|
+// }
|
|
|
|
|
|
-void refresh_blinded_vector(int8_t flags0[], int8_t flags2[], DB_t b[], DB_t d[],
|
|
|
- DB_t finalCW0, DB_t finalCW2, bool party, size_t db_nitems, size_t rotate_by = 0)
|
|
|
-{
|
|
|
-
|
|
|
-
|
|
|
+void refresh_blinded_vector(int8_t flags0[], int8_t flags2[], DB_t b[], DB_t d[], DB_t finalCW0, DB_t finalCW2, bool party, size_t db_nitems, size_t rotate_by = 0)
|
|
|
+{
|
|
|
DB_t tmp0 = 0;
|
|
|
DB_t tmp2 = 0;
|
|
|
-
|
|
|
for(size_t j = 0; j < db_nitems; ++j)
|
|
|
{
|
|
|
-
|
|
|
- if(flags0[(j + rotate_by) % db_nitems] != 0)
|
|
|
- {
|
|
|
- tmp0 = finalCW0;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- tmp0 = 0;
|
|
|
- }
|
|
|
|
|
|
- if(flags2[(j + rotate_by) % db_nitems] != 0)
|
|
|
- {
|
|
|
- tmp2 = finalCW2;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- tmp2 = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if(party)
|
|
|
- {
|
|
|
- updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems] - tmp0 + tmp2;
|
|
|
- }
|
|
|
- if(!party)
|
|
|
- {
|
|
|
- updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems] + tmp0 - tmp2;
|
|
|
- }
|
|
|
+ tmp0 = (flags0[(j + rotate_by) % db_nitems] != 0) ? finalCW0 : 0;
|
|
|
+ tmp2 = (flags2[(j + rotate_by) % db_nitems] != 0) ? finalCW2 : 0;
|
|
|
+
|
|
|
+ // if(flags0[(j + rotate_by) % db_nitems] != 0)
|
|
|
+ // {
|
|
|
+ // tmp0 = finalCW0;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // tmp0 = 0;
|
|
|
+ // }
|
|
|
+ // if(flags2[(j + rotate_by) % db_nitems] != 0)
|
|
|
+ // {
|
|
|
+ // tmp2 = finalCW2;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // tmp2 = 0;
|
|
|
+ // }
|
|
|
+ if(party)
|
|
|
+ {
|
|
|
+ updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems] - tmp0 + tmp2;
|
|
|
+ }
|
|
|
+ if(!party)
|
|
|
+ {
|
|
|
+ updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems] + tmp0 - tmp2;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void refresh_blinded_vector_and_blinds(int8_t flags[], DB_t standard_basis_vector[], DB_t finalCW,int8_t flags0[], int8_t flags2[], DB_t b[], DB_t d[],
|
|
|
- bool party, size_t db_nitems, size_t rotate_by)
|
|
|
+ bool party, size_t db_nitems, size_t rotate_by)
|
|
|
{
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- for(size_t j = 0; j < db_nitems; ++j)
|
|
|
- {
|
|
|
-
|
|
|
- updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems]
|
|
|
- - (flags0[(j + rotate_by) % db_nitems] * finalCW) + (flags2[(j + rotate_by) % db_nitems] * finalCW);
|
|
|
-
|
|
|
- blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] - (flags[(j + rotate_by) % db_nitems] * finalCW);// ((flags[(j + rotate_by) % db_nitems]!=0) ? finalCW : 0 );
|
|
|
-
|
|
|
-
|
|
|
- // if(party)
|
|
|
- // {
|
|
|
- // updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems] - ((flags0[(j + rotate_by) % db_nitems]!=0) ? finalCW : 0 ) + ((flags2[(j + rotate_by) % db_nitems]!=0) ? finalCW : 0 );
|
|
|
- // blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] - ((flags[(j + rotate_by) % db_nitems]!=0) ? finalCW : 0 );
|
|
|
- // }
|
|
|
- // if(!party)
|
|
|
- // {
|
|
|
- // updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems] + ((flags0[(j + rotate_by) % db_nitems]!=0) ? finalCW : 0 ) - ((flags2[(j + rotate_by) % db_nitems]!=0) ? finalCW : 0 );
|
|
|
- // blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] + ((flags[(j + rotate_by) % db_nitems]!=0) ? finalCW : 0 );
|
|
|
- // }
|
|
|
- }
|
|
|
+ for(size_t j = 0; j < db_nitems; ++j)
|
|
|
+ {
|
|
|
+ updated_blinded_DB_recv[j] = blinded_DB_recv[j] - b[(j + rotate_by) % db_nitems] + d[(j + rotate_by) % db_nitems]
|
|
|
+ - (flags0[(j + rotate_by) % db_nitems] * finalCW) + (flags2[(j + rotate_by) % db_nitems] * finalCW);
|
|
|
+ blinds[j] = blinds[j] - standard_basis_vector[(j + rotate_by) % db_nitems] - (flags[(j + rotate_by) % db_nitems] * finalCW);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void duoram_refresh (int8_t flags0[], int8_t flags1[], int8_t flags2[], DB_t b[], DB_t c[], DB_t d[], DB_t CW, bool party, size_t db_nitems, size_t rotate_by_ = 0)
|