Browse Source

creating lib, and removing client obj from server

Sebastian Angel 4 years ago
parent
commit
09d61a6d4d
4 changed files with 17 additions and 14 deletions
  1. 11 7
      CMakeLists.txt
  2. 1 1
      main.cpp
  3. 3 4
      pir_server.cpp
  4. 2 2
      pir_server.hpp

+ 11 - 7
CMakeLists.txt

@@ -1,17 +1,21 @@
 cmake_minimum_required(VERSION 3.10)
 
-project(SealPIR VERSION 2.1 LANGUAGES CXX)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
+project(SealPIR VERSION 2.1 LANGUAGES CXX)
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
 
-add_executable(sealpir 
+add_executable(main 
 	main.cpp
-	pir.cpp
-	pir_client.cpp
-	pir_server.cpp
+)
+
+add_library(sealpir STATIC
+  pir.cpp
+  pir_client.cpp
+  pir_server.cpp
 )
 
 find_package(SEAL 3.2.0 EXACT REQUIRED)
 
-target_link_libraries(sealpir SEAL::seal
-)
+target_link_libraries(main sealpir SEAL::seal)

+ 1 - 1
main.cpp

@@ -86,7 +86,7 @@ int main(int argc, char *argv[]) {
 
     // Measure query processing (including expansion)
     auto time_server_s = high_resolution_clock::now();
-    PirReply reply = server.generate_reply(query, 0, client);
+    PirReply reply = server.generate_reply(query, 0);
     auto time_server_e = high_resolution_clock::now();
     auto time_server_us = duration_cast<microseconds>(time_server_e - time_server_s).count();
 

+ 3 - 4
pir_server.cpp

@@ -127,7 +127,7 @@ void PIRServer::set_galois_key(std::uint32_t client_id, seal::GaloisKeys galkey)
     galoisKeys_[client_id] = galkey;
 }
 
-PirReply PIRServer::generate_reply(PirQuery query, uint32_t client_id, PIRClient &client) {
+PirReply PIRServer::generate_reply(PirQuery query, uint32_t client_id) {
 
     vector<uint64_t> nvec = pir_params_.nvec;
     uint64_t product = 1;
@@ -164,7 +164,7 @@ PirReply PIRServer::generate_reply(PirQuery query, uint32_t client_id, PIRClient
                 total = n_i % N; 
             }
             cout << "-- expanding one query ctxt into " << total  << " ctxts "<< endl;
-            vector<Ciphertext> expanded_query_part = expand_query(query[i][j], total, client_id, client);
+            vector<Ciphertext> expanded_query_part = expand_query(query[i][j], total, client_id);
             expanded_query.insert(expanded_query.end(), std::make_move_iterator(expanded_query_part.begin()), 
                     std::make_move_iterator(expanded_query_part.end()));
             expanded_query_part.clear(); 
@@ -258,7 +258,7 @@ PirReply PIRServer::generate_reply(PirQuery query, uint32_t client_id, PIRClient
 }
 
 inline vector<Ciphertext> PIRServer::expand_query(const Ciphertext &encrypted, uint32_t m,
-                                           uint32_t client_id, PIRClient &client) {
+                                           uint32_t client_id) {
 
 #ifdef DEBUG
     uint64_t plainMod = params_.plain_modulus().value();
@@ -301,7 +301,6 @@ inline vector<Ciphertext> PIRServer::expand_query(const Ciphertext &encrypted, u
 
             //cout << "rotate " << client.decryptor_->invariant_noise_budget(tempctxt_rotated) << ", "; 
 
-
             evaluator_->add(temp[a], tempctxt_rotated, newtemp[a]);
             multiply_power_of_X(temp[a], tempctxt_shifted, index_raw);
 

+ 2 - 2
pir_server.hpp

@@ -17,9 +17,9 @@ class PIRServer {
     void preprocess_database();
 
     std::vector<seal::Ciphertext> expand_query(
-            const seal::Ciphertext &encrypted, std::uint32_t m, uint32_t client_id, PIRClient &client);
+            const seal::Ciphertext &encrypted, std::uint32_t m, uint32_t client_id);
 
-    PirReply generate_reply(PirQuery query, std::uint32_t client_id, PIRClient &client);
+    PirReply generate_reply(PirQuery query, std::uint32_t client_id);
 
     void set_galois_key(std::uint32_t client_id, seal::GaloisKeys galkey);