additionL2.cpp 1.2 KB

123456789101112131415161718192021222324252627282930
  1. #include "additionL2.hpp"
  2. BitEvalL2 additionL2 (BitEvalL2 a, BitEvalL2 b, PublicKey public_key)
  3. {
  4. BitEvalL2 somme;
  5. somme.set_bit_masque((a.get_bit_masque()+b.get_bit_masque())%2);
  6. scalar_t lambda1, lambda2;
  7. scalar_setrandom(lambda1, bn_r);
  8. scalar_setrandom(lambda2, bn_r);
  9. Quadripoint beta, temp1, temp2, factor3, factor4;
  10. Bipoint<curvepoint_fp_t> bipoint_curve_subgroupelt;
  11. Bipoint<twistpoint_fp2_t> bipoint_twist_subgroupelt;
  12. temp1=a.get_quadripoint()*b.get_quadripoint();
  13. bipoint_curve_subgroupelt.scalarmult_vartime(public_key.get_bipoint_curvegen(),lambda1);
  14. bipoint_curve_subgroupelt.makeaffine();
  15. bipoint_twist_subgroupelt.scalarmult_vartime(public_key.get_bipoint_twistgen(),lambda2);
  16. bipoint_twist_subgroupelt.makeaffine();
  17. //calcul de e(u,v1)
  18. factor3 = pairing(public_key.get_bipoint_curve_groupelt(),bipoint_twist_subgroupelt);
  19. //calcul de e(u1,v)
  20. factor4 = pairing(bipoint_curve_subgroupelt,public_key.get_bipoint_twist_groupelt());
  21. temp2=factor3*factor4;
  22. beta=temp1*temp2;
  23. somme.set_quadripoint(beta);
  24. //private_key.pi_T(a.get_quadripoint()).print();
  25. //private_key.pi_T(b.get_quadripoint()).print();
  26. //private_key.pi_T(factor3).print();
  27. //private_key.pi_T(factor4).print();
  28. return somme;
  29. }