circuit_demo.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "circuit_demo.hpp"
  2. void circuit_demo(char& evalue_dechiffre, char clair, PublicKey public_key, PrivateKey private_key)
  3. {
  4. cout << "Tapez le caractère de votre choix" << endl;
  5. zout(clair);
  6. F2 clair1=0, clair2=0, clair3=0; // resp de n8, n9, o8 (voir rapport.pdf, page 24)
  7. precomputation(clair1, clair2, clair3, clair);
  8. F2 curve, twist, quadripoint;
  9. BitEvalL1<curvepoint_fp_t> n8,n9;
  10. BitEvalL1<twistpoint_fp2_t> o8;
  11. chiffrement(n8,clair1,public_key);
  12. chiffrement(n9,clair2,public_key);
  13. chiffrement(o8,clair3,public_key);
  14. grostitre(affichage des trois chiffrés correspondant aux trois bits utiles);
  15. cout << "Un chiffré consiste en un bit et deux points de la courbe ou du twist" << endl;
  16. n8.print();
  17. n9.print();
  18. o8.print();
  19. BitEvalL1<curvepoint_fp_t> temp_curve, chiffre_1_curve;
  20. BitEvalL1<twistpoint_fp2_t> temp_twist, chiffre_1_twist;
  21. chiffrement(chiffre_1_curve,1, public_key);
  22. chiffrement(chiffre_1_twist,1, public_key);
  23. temp_curve = additionL1(chiffre_1_curve,n9,public_key); //NB il faut rajouter CURVE pour passer de BitChiffre à BitEvalL1, la diff entre les deux, la taille mémoire
  24. temp_twist = additionL1(chiffre_1_twist,o8,public_key);
  25. BitEvalL2 temp_quadripoint; // (1+n9)(1+o8)
  26. temp_quadripoint = multiplicationL1(temp_curve,temp_twist,public_key);
  27. BitEvalL3 evalue; // n8(1+n9)(1+o8)
  28. evalue = multiplicationL1L2(n8,temp_quadripoint,public_key);
  29. cout << BOLDCYAN << "affichage de l'évalué" << RESET << endl;
  30. cout << " Dans ce circuit, l'évalué consiste en 2*4 points du corps Fp^12 et deux points de la courbe" << endl;
  31. evalue.print();
  32. postcomputation(evalue_dechiffre, clair, evalue, private_key);
  33. zout(clair, evalue_dechiffre);
  34. }