|
@@ -38,8 +38,10 @@ bool run(DBHandler *db, uint64_t chosen_element, PIRParameters params){
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|
- PIRReplyGenerator r_generator(params,*crypto,db);
|
|
|
- r_generator.setPirParams(params);
|
|
|
+
|
|
|
+
|
|
|
+ PIRReplyGenerator *r_generator = new PIRReplyGenerator(params,*crypto,db);
|
|
|
+ r_generator->setPirParams(params);
|
|
|
|
|
|
|
|
|
|
|
@@ -47,7 +49,7 @@ bool run(DBHandler *db, uint64_t chosen_element, PIRParameters params){
|
|
|
char* query_element;
|
|
|
while (q_generator.popQuery(&query_element))
|
|
|
{
|
|
|
- r_generator.pushQuery(query_element);
|
|
|
+ r_generator->pushQuery(query_element);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -58,18 +60,54 @@ bool run(DBHandler *db, uint64_t chosen_element, PIRParameters params){
|
|
|
std::cout << "SimplePIR: Importing database ..." << std::endl;
|
|
|
|
|
|
|
|
|
- imported_database* imported_db = r_generator.importData( 0,
|
|
|
+ imported_database* imported_db = r_generator->importData( 0,
|
|
|
bytes_per_db_element */ db->getmaxFileBytesize());
|
|
|
std::cout << "SimplePIR: Database imported" << std::endl;
|
|
|
|
|
|
|
|
|
std::cout << "SimplePIR: Generating reply ..." << std::endl;
|
|
|
double start = omp_get_wtime();
|
|
|
- r_generator.generateReply(imported_db);
|
|
|
+ r_generator->generateReply(imported_db);
|
|
|
double end = omp_get_wtime();
|
|
|
std::cout << "SimplePIR: Reply generated in " << end-start << " seconds" << std::endl;
|
|
|
+
|
|
|
+
|
|
|
+ * Advanced example: uncomment it to test
|
|
|
+ * The object imported_db is separated from r_generator in purpose
|
|
|
+ * Here is an example on how to use the same imported_db for multiple queries
|
|
|
+ * DO NOT try to use the same reply generator more than once, this causes issues
|
|
|
+ * ******************************************************************************/
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0 ; i < 3 ; i++){
|
|
|
+
|
|
|
+
|
|
|
+ char* reply_element_tmp;
|
|
|
+ while (r_generator->popReply(&reply_element_tmp)){
|
|
|
+ free(reply_element_tmp);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ r_generator->freeQueries();
|
|
|
+ delete r_generator;
|
|
|
|
|
|
+
|
|
|
+ r_generator = new PIRReplyGenerator(params,*crypto,db);
|
|
|
+ r_generator->setPirParams(params);
|
|
|
|
|
|
+
|
|
|
+ q_generator.generateQuery(chosen_element);
|
|
|
+
|
|
|
+
|
|
|
+ while (q_generator.popQuery(&query_element))
|
|
|
+ {
|
|
|
+ r_generator->pushQuery(query_element);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ r_generator->generateReply(imported_db);
|
|
|
+ }
|
|
|
+ */
|
|
|
|
|
|
|
|
|
* Reply extraction phase (client-side)
|
|
@@ -80,11 +118,11 @@ bool run(DBHandler *db, uint64_t chosen_element, PIRParameters params){
|
|
|
|
|
|
|
|
|
|
|
|
- std::cout << "SimplePIR: "<< r_generator.getnbRepliesGenerated()<< " Replies generated " << std::endl;
|
|
|
+ std::cout << "SimplePIR: "<< r_generator->getnbRepliesGenerated()<< " Replies generated " << std::endl;
|
|
|
|
|
|
uint64_t clientside_maxFileBytesize = db->getmaxFileBytesize();
|
|
|
char* reply_element;
|
|
|
- while (r_generator.popReply(&reply_element))
|
|
|
+ while (r_generator->popReply(&reply_element))
|
|
|
{
|
|
|
r_extractor->pushEncryptedReply(reply_element);
|
|
|
}
|
|
@@ -127,7 +165,8 @@ bool run(DBHandler *db, uint64_t chosen_element, PIRParameters params){
|
|
|
******************************************************************************/
|
|
|
|
|
|
delete imported_db;
|
|
|
- r_generator.freeQueries();
|
|
|
+ r_generator->freeQueries();
|
|
|
+ delete r_generator;
|
|
|
|
|
|
|
|
|
return fail;
|
|
@@ -163,7 +202,7 @@ int main(int argc, char * argv[]) {
|
|
|
|
|
|
|
|
|
|
|
|
- database_size = 1ULL<<31; nb_files = 20; maxFileBytesize = database_size/nb_files;
|
|
|
+ database_size = 1ULL<<25; nb_files = 20; maxFileBytesize = database_size/nb_files;
|
|
|
DBGenerator db(nb_files, maxFileBytesize, false);
|
|
|
chosen_element = 3;
|
|
|
params.alpha = 1; params.d = 1; params.n[0] = nb_files;
|
|
@@ -173,7 +212,6 @@ int main(int argc, char * argv[]) {
|
|
|
params.crypto_params = "LWE:80:2048:120";
|
|
|
tests_failed |= run(&db, chosen_element, params);
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
@@ -224,7 +262,6 @@ int main(int argc, char * argv[]) {
|
|
|
params.alpha = 1; params.d = 1; params.n[0] = nb_files;
|
|
|
params.crypto_params = "LWE:80:2048:120";
|
|
|
tests_failed |= run(&db7, chosen_element, params);
|
|
|
-
|
|
|
if (tests_failed)
|
|
|
{
|
|
|
std::cout << "WARNING : at least one tests failed" << std::endl;
|