circuit_minmaj2.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "circuit_minmaj2.hpp"
  2. void circuit_minmaj2(char& rop, char symbole, PublicKey public_key, PrivateKey private_key)
  3. {
  4. F2 clair1=0, clair2=0, clair3=0;
  5. clair1=bitset<sizeof(int)*CHAR_BIT>(symbole)[5] ;
  6. clair2=bitset<sizeof(int)*CHAR_BIT>(symbole)[6] ;
  7. clair3=bitset<sizeof(int)*CHAR_BIT>(symbole)[7] ;
  8. BitEvalL1<twistpoint_fp2_t> m6;
  9. BitEvalL1<curvepoint_fp_t> m7,m8;
  10. chiffrement(m6,clair1,public_key);
  11. chiffrement(m7,clair2,public_key);
  12. chiffrement(m8,clair3,public_key);
  13. BitEvalL1<curvepoint_fp_t> temp_curve, chiffre_1_curve;
  14. BitEvalL1<twistpoint_fp2_t> temp_twist, chiffre_1_twist;
  15. chiffrement(chiffre_1_curve,1, public_key);
  16. chiffrement(chiffre_1_twist, 1, public_key);
  17. temp_curve = additionL1(chiffre_1_curve,m8,public_key); //calcul 1+m8
  18. BitEvalL2 temp_quadripoint; // m6(1+m8)
  19. temp_quadripoint = multiplicationL1(temp_curve,m6,public_key);
  20. BitEvalL2 chiffre_L2_1;
  21. BitEvalL3 temp_L3, evalue, chiffre_L3_1; // m6m7(1+m8)
  22. chiffre_L2_1 = multiplicationL1(chiffre_1_curve,chiffre_1_twist,public_key);
  23. chiffre_L3_1=multiplicationL1L2(chiffre_1_curve,chiffre_L2_1,public_key);
  24. temp_L3 = multiplicationL1L2(m7,temp_quadripoint,public_key);
  25. evalue=additionL3(temp_L3,chiffre_L3_1,public_key);
  26. F2 IS_LOWER_CASE=0;
  27. dechiffrementL3(IS_LOWER_CASE,evalue,private_key);
  28. char symbole_dechiffree=symbole;
  29. if (IS_LOWER_CASE == 0)
  30. {
  31. //cout << symbole << " est sensé être une minuscule!" << endl;
  32. symbole_dechiffree=char(symbole-32);
  33. }
  34. else
  35. {
  36. //cout << symbole << " est sensé ne pas être une minuscule!" << endl;
  37. }
  38. cout << symbole_dechiffree << flush;
  39. }