main.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 decrypted0, decrypted1, decrypted3, decrypted5, decrypted6, decrypted10, decrypted15, decrypted30;
  12. std::cout << "Scalar test value (0): " << test0 << std::endl;
  13. // std::cout << "Scalar test value (1): " << test1 << std::endl;
  14. std::cout << "Scalar test value (3): " << test3 << std::endl;
  15. std::cout << "Scalar test value (5): " << test5 << std::endl;
  16. CurveBipoint encrypted0, encrypted1, encrypted3, encrypted6;
  17. // CurveBipoint pi_1_encrypted3, pi_1_curvegen_times3;
  18. TwistBipoint encrypted5, encrypted10;
  19. Quadripoint encrypted15, encrypted30;
  20. std::cout << "Performing encryptions" << std::endl;
  21. system.encrypt(encrypted0, test0);
  22. // system.encrypt(encrypted1, test1);
  23. system.encrypt(encrypted3, test3);
  24. system.encrypt(encrypted5, test5);
  25. std::cout << "Performing additions" << std::endl;
  26. encrypted6 = system.homomorphic_addition(encrypted3, encrypted3);
  27. encrypted10 = system.homomorphic_addition(encrypted5, encrypted5);
  28. std::cout << "Performing multiplication" << std::endl;
  29. encrypted15 = system.homomorphic_multiplication(encrypted3, encrypted5);
  30. std::cout << "Performing L2 addition" << std::endl;
  31. encrypted30 = system.homomorphic_addition(encrypted15, encrypted15);
  32. std::cout << "Performing decryptions" << std::endl;
  33. decrypted0 = system.decrypt(encrypted0);
  34. std::cout << "Scalar decrypted value (0): " << decrypted0 << std::endl;
  35. // decrypted1 = system.decrypt(encrypted1);
  36. // std::cout << "Scalar decrypted value (1): " << decrypted1 << std::endl;
  37. // decrypted1 = system.decrypt(encrypted1);
  38. // std::cout << "Scalar decrypted value (1): " << decrypted1 << std::endl;
  39. decrypted3 = system.decrypt(encrypted3);
  40. std::cout << "Scalar decrypted value (3): " << decrypted3 << std::endl;
  41. decrypted5 = system.decrypt(encrypted5);
  42. std::cout << "Scalar decrypted value (5): " << decrypted5 << std::endl;
  43. decrypted6 = system.decrypt(encrypted6);
  44. std::cout << "Scalar decrypted value (6): " << decrypted6 << std::endl;
  45. decrypted10 = system.decrypt(encrypted10);
  46. std::cout << "Scalar decrypted value (10): " << decrypted10 << std::endl;
  47. decrypted15 = system.decrypt(encrypted15);
  48. std::cout << "Scalar decrypted value (15): " << decrypted15 << std::endl;
  49. decrypted30 = system.decrypt(encrypted30);
  50. std::cout << "Scalar decrypted value (30): " << decrypted30 << std::endl;
  51. return 0;
  52. }