123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- #include <type_traits> // std::is_same<>
- #include <limits> // std::numeric_limits<>
- #include <climits> // CHAR_BIT
- #include <cmath> // std::log2, std::ceil, std::floor
- #include <stdexcept> // std::runtime_error
- #include <array> // std::array<>
- #include <iostream> // std::istream and std::ostream
- #include <vector> // std::vector<>
- #include <memory> // std::shared_ptr<>
- #include <utility> // std::move
- #include <algorithm> // std::copy
- #include <cstring> // std::memcpy
- #include <bsd/stdlib.h> // arc4random_buf
- #include <x86intrin.h> // SSE and AVX intrinsics
- #include "prg.h"
- #include "prg_aes_impl.h"
- #include <iostream>
-
-
- #include <cstdlib>
-
-
- #include "block.h"
- #include <chrono>
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <fstream>
- #include <boost/asio.hpp>
- using boost::asio::ip::tcp;
- #include "duoram-utils.h"
- #include <mutex>
-
-
- int main(int argc, char * argv[])
- {
-
- const size_t expo = 5;
- const size_t db_nitems = 1ULL << expo;
- DB = (DB_t *) std::aligned_alloc(sizeof(__m256i), db_nitems * sizeof(DB_t));
- reading_b = (int8_t *) malloc(db_nitems * sizeof(int8_t));
- reading_c = (int8_t *) malloc(db_nitems * sizeof(int8_t));
- reading_d = (int8_t *) malloc(db_nitems * sizeof(int8_t));
- writing_b = (int8_t *) malloc(db_nitems * sizeof(int8_t));
- writing_c = (int8_t *) malloc(db_nitems * sizeof(int8_t));
- writing_d = (int8_t *) malloc(db_nitems * sizeof(int8_t));
- b = (DB_t *) std::aligned_alloc(sizeof(__m256i), db_nitems * sizeof(DB_t));
- c = (DB_t *) std::aligned_alloc(sizeof(__m256i), db_nitems * sizeof(DB_t));
- d = (DB_t *) std::aligned_alloc(sizeof(__m256i), db_nitems * sizeof(DB_t));
-
- DB_t DB0[db_nitems];
- DB_t DB1[db_nitems];
- for(size_t j = 0; j < db_nitems; ++j)
- {
- DB[j] = j;
- arc4random_buf(&DB0[j], sizeof(DB_t));
- DB1[j] = DB[j] - DB0[j];
- }
- char const * filename0;
- filename0 = "DB0";
- char const * filename1;
- filename1 = "DB1";
-
- int w0 = open( filename0, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- size_t written = write(w0, DB0, db_nitems * sizeof(DB0[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- int w1 = open( filename1, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w1, DB1, db_nitems * sizeof(DB1[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w1);
-
- generate_flags_and_standard_basis_vectors2(false, db_nitems);
- char const * p0_filename0;
- p0_filename0 = "party0_read_flags_b";
- w0 = open( p0_filename0, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, reading_b, db_nitems * sizeof(reading_b[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
-
- p0_filename0 = "party0_write_flags_b";
- w0 = open( p0_filename0, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, writing_b, db_nitems * sizeof(writing_b[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p0_filename0 = "party0_write_b";
- w0 = open( p0_filename0, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, b, db_nitems * sizeof(b[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- char const * p0_filename1;
- p0_filename1 = "party0_read_flags_c";
- w0 = open( p0_filename1, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, reading_c, db_nitems * sizeof(reading_c[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p0_filename1 = "party0_write_flags_c";
- w0 = open( p0_filename1, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, writing_c, db_nitems * sizeof(writing_c[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p0_filename1 = "party0_write_c";
- w0 = open( p0_filename1, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, c, db_nitems * sizeof(c[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- char const * p0_filename2;
- p0_filename2 = "party0_read_flags_d";
- w0 = open( p0_filename2, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, reading_d, db_nitems * sizeof(reading_d[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p0_filename2 = "party0_write_flags_d";
- w0 = open( p0_filename2, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, writing_d, db_nitems * sizeof(writing_d[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p0_filename2 = "party0_write_d";
- w0 = open( p0_filename2, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, d, db_nitems * sizeof(d[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- generate_flags_and_standard_basis_vectors2(true, db_nitems);
- char const * p1_filename0;
- p1_filename0 = "party1_read_flags_b";
- w0 = open( p1_filename0, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, reading_b, db_nitems * sizeof(reading_b[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p1_filename0 = "party1_write_flags_b";
- w0 = open( p1_filename0, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, writing_b, db_nitems * sizeof(writing_b[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p1_filename0 = "party1_write_b";
- w0 = open( p1_filename0, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, b, db_nitems * sizeof(b[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- char const * p1_filename1;
- p1_filename1 = "party1_read_flags_c";
- w0 = open( p1_filename1, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, reading_c, db_nitems * sizeof(reading_c[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p1_filename1 = "party1_write_flags_c";
- w0 = open( p1_filename1, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, writing_c, db_nitems * sizeof(writing_c[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p1_filename1 = "party1_write_c";
- w0 = open( p1_filename1, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, c, db_nitems * sizeof(c[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- char const * p1_filename2;
- p1_filename2 = "party1_read_flags_d";
- w0 = open( p1_filename2, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, reading_d, db_nitems * sizeof(reading_d[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p1_filename2 = "party1_write_flags_d";
- w0 = open( p1_filename2, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, writing_d, db_nitems * sizeof(writing_d[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- p1_filename2 = "party1_write_d";
- w0 = open( p1_filename2, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
- written = write(w0, d, db_nitems * sizeof(d[0]));
- if(written<0) {
- perror("Write error");
- }
- close(w0);
- return 0;
- }
|