circuit_multiplicationL1L2.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "circuit_multiplicationL1L2.hpp"
  2. void circuit_multiplicationL1L2(PublicKey public_key, PrivateKey private_key)
  3. {
  4. F2 zero=0, un=0, produit=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;
  7. BitEvalL2 chiffre_L2_0, chiffre_L2_1;
  8. BitEvalL3 chiffre_produit;
  9. chiffrement(bit_chiffre_0_curve,0,public_key);
  10. chiffrement(bit_chiffre_1_curve,1,public_key);
  11. chiffrement(bit_chiffre_0_twist,0,public_key);
  12. chiffrement(bit_chiffre_1_twist,1,public_key);
  13. chiffre_L2_0 = multiplicationL1(bit_chiffre_0_curve,bit_chiffre_0_twist,public_key);
  14. chiffre_L2_1 = multiplicationL1(bit_chiffre_1_curve,bit_chiffre_1_twist,public_key);
  15. dechiffrementL2(zero,chiffre_L2_0,private_key);
  16. dechiffrementL2(un,chiffre_L2_1,private_key);
  17. zout(zero,un);
  18. cout << "cas #1 0*0" << endl;
  19. chiffre_produit=multiplicationL1L2(bit_chiffre_0_curve,chiffre_L2_0,public_key);
  20. dechiffrementL3(produit,chiffre_produit,private_key);
  21. zout(produit);
  22. //exit(0);
  23. cout << "cas #2 0*1" << endl;
  24. chiffre_produit=multiplicationL1L2(bit_chiffre_0_curve,chiffre_L2_1,public_key);
  25. dechiffrementL3(produit,chiffre_produit,private_key);
  26. zout(produit);
  27. cout << "cas #3 1*0" << endl;
  28. chiffre_produit=multiplicationL1L2(bit_chiffre_1_curve,chiffre_L2_0,public_key);
  29. dechiffrementL3(produit,chiffre_produit,private_key);
  30. zout(produit);
  31. cout << "cas #4 1*1" << endl;
  32. chiffre_produit=multiplicationL1L2(bit_chiffre_1_curve,chiffre_L2_1,public_key);
  33. dechiffrementL3(produit,chiffre_produit,private_key);
  34. zout(produit);
  35. JUMP;
  36. cout << "taille d'un chiffré de niveau 3 = " << sizeof(chiffre_produit)+sizeof(Bipoint<curvepoint_fp_t>)*(chiffre_produit.get_vec_bipoints().capacity()) +sizeof(Quadripoint)*(chiffre_produit.get_vec_quadripoints().capacity()) << " octets" << endl;
  37. }