main.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include <iostream>
  2. #include "BGN.hpp"
  3. int main(void)
  4. {
  5. BGN system;
  6. Scalar test0(0);
  7. Scalar test1(1);
  8. Scalar test3(3);
  9. Scalar test5(5);
  10. Scalar test6(6);
  11. Scalar test10(10);
  12. Scalar test15(15);
  13. Scalar test30(30);
  14. Scalar decrypted;
  15. std::cout << "Scalar test value (0): " << test0 << std::endl;
  16. std::cout << "Scalar test value (1): " << test1 << std::endl;
  17. std::cout << "Scalar test value (3): " << test3 << std::endl;
  18. std::cout << "Scalar test value (5): " << test5 << std::endl;
  19. CurveBipoint encrypted0, encrypted1, encrypted3, encrypted6;
  20. TwistBipoint encrypted5, encrypted10;
  21. Quadripoint encrypted15, encrypted30;
  22. std::cout << "Performing encryptions" << std::endl;
  23. system.encrypt(encrypted0, test0);
  24. system.encrypt(encrypted1, test1);
  25. system.encrypt(encrypted3, test3);
  26. system.encrypt(encrypted5, test5);
  27. std::cout << "Performing additions" << std::endl;
  28. encrypted6 = system.homomorphic_addition(encrypted3, encrypted3);
  29. encrypted10 = system.homomorphic_addition(encrypted5, encrypted5);
  30. std::cout << "Performing multiplication" << std::endl;
  31. encrypted15 = system.homomorphic_multiplication(encrypted3, encrypted5);
  32. std::cout << "Performing L2 addition" << std::endl;
  33. encrypted30 = system.homomorphic_addition(encrypted15, encrypted15);
  34. std::cout << "Performing decryptions" << std::endl;
  35. decrypted = system.decrypt(encrypted0);
  36. std::cout << "Decryption of point at infinity (0): ";
  37. if (decrypted == test0)
  38. std::cout << "PASS" << std::endl;
  39. else
  40. std::cout << "FAIL" << std::endl;
  41. decrypted = system.decrypt(encrypted1);
  42. std::cout << "Decryption of generator (1): ";
  43. if (decrypted == test1)
  44. std::cout << "PASS" << std::endl;
  45. else
  46. std::cout << "FAIL" << std::endl;
  47. decrypted = system.decrypt(encrypted1);
  48. std::cout << "Memoization: ";
  49. if (decrypted == test1)
  50. std::cout << "PASS" << std::endl;
  51. else
  52. std::cout << "FAIL" << std::endl;
  53. decrypted = system.decrypt(encrypted3);
  54. std::cout << "Decryption of normal point in G (3): ";
  55. if (decrypted == test3)
  56. std::cout << "PASS" << std::endl;
  57. else
  58. std::cout << "FAIL" << std::endl;
  59. decrypted = system.decrypt(encrypted5);
  60. std::cout << "Decryption of normal point in H (5): ";
  61. if (decrypted == test5)
  62. std::cout << "PASS" << std::endl;
  63. else
  64. std::cout << "FAIL" << std::endl;
  65. decrypted = system.decrypt(encrypted6);
  66. std::cout << "Addition in G: ";
  67. if (decrypted == test6)
  68. std::cout << "PASS" << std::endl;
  69. else
  70. std::cout << "FAIL" << std::endl;
  71. decrypted = system.decrypt(encrypted10);
  72. std::cout << "Addition in H: ";
  73. if (decrypted == test10)
  74. std::cout << "PASS" << std::endl;
  75. else
  76. std::cout << "FAIL" << std::endl;
  77. decrypted = system.decrypt(encrypted15);
  78. std::cout << "Multiplication (G by H): ";
  79. if (decrypted == test15)
  80. std::cout << "PASS" << std::endl;
  81. else
  82. std::cout << "FAIL" << std::endl;
  83. decrypted = system.decrypt(encrypted30);
  84. std::cout << "Addition in G_T: ";
  85. if (decrypted == test30)
  86. std::cout << "PASS" << std::endl;
  87. else
  88. std::cout << "FAIL" << std::endl;
  89. return 0;
  90. }