circuit_additionL3.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "circuit_additionL3.hpp"
  2. void circuit_additionL3(PublicKey public_key, PrivateKey private_key)
  3. {
  4. F2 un=0,zero=0, somme=0;
  5. BitEvalL1<curvepoint_fp_t> bit_chiffre_0_curve, bit_chiffre_1_curve;
  6. BitEvalL1<twistpoint_fp2_t> bit_chiffre_0_twist, bit_chiffre_1_twist; BitEvalL2 chiffre_L2_0, chiffre_L2_1;
  7. BitEvalL3 chiffre_L3_0, chiffre_L3_1, chiffre_somme;
  8. chiffrement(bit_chiffre_0_curve,0,public_key);
  9. chiffrement(bit_chiffre_1_curve,1,public_key);
  10. chiffrement(bit_chiffre_0_twist,0,public_key);
  11. chiffrement(bit_chiffre_1_twist,1,public_key);
  12. chiffre_L2_0 = multiplicationL1(bit_chiffre_0_curve,bit_chiffre_0_twist,public_key);
  13. chiffre_L2_1 = multiplicationL1(bit_chiffre_1_curve,bit_chiffre_1_twist,public_key);
  14. chiffre_L3_0 = multiplicationL1L2(bit_chiffre_0_curve,chiffre_L2_0,public_key);
  15. chiffre_L3_1 = multiplicationL1L2(bit_chiffre_1_curve,chiffre_L2_1,public_key);
  16. dechiffrementL3(zero,chiffre_L3_0,private_key);
  17. dechiffrementL3(un,chiffre_L3_1,private_key);
  18. zout(zero,un);
  19. cout << "cas #1 0+0" << endl;
  20. chiffre_somme=additionL3(chiffre_L3_0,chiffre_L3_0,public_key);
  21. dechiffrementL3(somme,chiffre_somme,private_key);
  22. zout(somme);
  23. cout << "cas #2 0+1" << endl;
  24. chiffre_somme=additionL3(chiffre_L3_0,chiffre_L3_1,public_key);
  25. dechiffrementL3(somme,chiffre_somme,private_key);
  26. zout(somme);
  27. cout << "cas #3 1+0" << endl;
  28. //chiffre_L3_0.print_bit_masque();
  29. //chiffre_L3_1.print_bit_masque();
  30. chiffre_somme=additionL3(chiffre_L3_1,chiffre_L3_0,public_key);
  31. dechiffrementL3(somme,chiffre_somme,private_key);
  32. zout(somme);
  33. //chiffre_somme.print_bit_masque();
  34. cout << "cas #4 1+1" << endl;
  35. chiffre_somme=additionL3(chiffre_L3_1,chiffre_L3_1,public_key);
  36. dechiffrementL3(somme,chiffre_somme,private_key);
  37. zout(somme);
  38. JUMP;
  39. cout << "taille d'un chiffré de niveau 3 = " << sizeof(chiffre_L3_0)+sizeof(Bipoint<curvepoint_fp_t>)*(chiffre_L3_0.get_vec_bipoints().capacity()) +sizeof(Quadripoint)*(chiffre_L3_0.get_vec_quadripoints().capacity())<< " octets" << endl;
  40. cout << "taille de la somme de 2 chiffrés de niveau 3 = " << sizeof(chiffre_somme)+sizeof(Bipoint<curvepoint_fp_t>)*(chiffre_somme.get_vec_bipoints().capacity()) +sizeof(Quadripoint)*(chiffre_somme.get_vec_quadripoints().capacity())<< " octets" << endl;
  41. }