main.cpp 3.4 KB

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