| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							-  
 
- void  write_into_the_database(DB_t DB[], DB_t updated_DB[], int8_t flags[], DB_t b[],  DB_t final_CW, bool party, size_t db_nitems, size_t rotate_by = 0)
 
- {
 
-  	for(size_t j = 0; j < db_nitems; ++j)
 
-  	{ 
 
- 	   const size_t ind = (j + rotate_by) % db_nitems;
 
- 	 	DB_t tmp = (flags[ind] * final_CW);
 
- 	 	DB[j] = DB[j] + b[ind]  + tmp;     
 
- 		updated_DB[j] = DB[j];
 
-  	}
 
- }
 
- void duoram_update(tcp::socket& in2, tcp::socket& sb, DB_t DB[], DB_t updated_DB[], int8_t flags[], DB_t standard_basis[], DB_t M0, DB_t alpha0, bool party, size_t db_nitems, size_t offset = 0)
 
- {	 	
 
- 	DB_t tmp = M0 + alpha0;	
 
- 	DB_t recv_final_cw; 
 
- 	write(sb, boost::asio::buffer(&tmp, sizeof(tmp)));
 
- 	write(in2, boost::asio::buffer(&tmp, sizeof(tmp)));
 
- 	read(sb, boost::asio::buffer(&recv_final_cw, sizeof(recv_final_cw)));
 
-  
 
- 	recv_final_cw = recv_final_cw + tmp;
 
-    
 
- 	write_into_the_database(DB, updated_DB, flags, standard_basis, recv_final_cw, party, db_nitems, offset);
 
- }
 
- void reconstruct_database(tcp::socket& sb, DB_t DB[], const size_t db_nitems)
 
- {
 
- 		for(size_t j = 0; j < db_nitems; ++j)
 
- 		{
 
- 			DB_t DB_j;
 
- 			boost::asio::write(sb, boost::asio::buffer(&DB[j], sizeof(DB[j])));
 
- 			boost::asio::read(sb, boost::asio::buffer(&DB_j, sizeof(DB_j)));
 
- 			DB_j = DB_j + DB[j];
 
- 			if(DB_j != 0) std::cout << j << " -> " << DB_j << std::endl;
 
- 		}
 
- }
 
- auto DuoramUpdate(bool party, size_t db_nitems,   size_t rotate_by_,
 
- 				  DB_t DB[], DB_t updated_DB[], int8_t writing_b[], DB_t b[],  DB_t final_CW, DB_t message,
 
- 				  int8_t writing_c[], int8_t writing_d[], DB_t c[], DB_t d[])
 
- {
 
- 	read_flags_for_updating(party, db_nitems);
 
- 	
 
- 	write_into_the_database(DB, updated_DB, writing_b, b, final_CW, party, db_nitems, - rotate_by_);
 
- 			
 
- 	#ifdef ThreeParty
 
- 		if(!party) duoram_refresh(writing_b, writing_c, writing_d, b, c, d,  final_CW, party, db_nitems, -rotate_by_); 			
 
- 		if( party) duoram_refresh(writing_b, writing_d, writing_c, b, d, c,  final_CW, party, db_nitems, -rotate_by_); 
 
- 	#endif
 
- }
 
 
  |