additionL1.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #include "additionL1.hpp"
  2. //template <typename T>
  3. //BitEvalL1<T> additionL1 (BitEvalL1<T> a, BitEvalL1<T> b, PublicKey public_key, Type type)
  4. //{
  5. //BitEvalL1<T> somme;
  6. //somme.set_bit_masque((a.get_bit_masque()+b.get_bit_masque())%2);
  7. //scalar_t lambda;
  8. //scalar_setrandom(lambda, bn_r);
  9. //if (type == CURVE)
  10. //{
  11. //Bipoint<curvepoint_fp_t> beta, temp, bipoint_curve_subgroupelt;
  12. ////ecris(u+u);
  13. ////temp=public_key.get_bipoint_curvegen()+public_key.get_bipoint_curvegen();
  14. ////temp.makeaffine();
  15. ////temp.print();
  16. ////ecris(beta1+beta2);
  17. //temp=a.get_bipoint()+b.get_bipoint();
  18. //temp.makeaffine();
  19. ////temp.print();
  20. ////ecris(pi_1(beta1+beta2));
  21. ////private_key.pi_1(temp).makeaffine();
  22. ////private_key.pi_1(temp).print();
  23. ////ecris(pi_1(u1));
  24. //bipoint_curve_subgroupelt.scalarmult_vartime(public_key.get_bipoint_curvegen(),lambda);
  25. //bipoint_curve_subgroupelt.makeaffine();
  26. ////private_key.pi_1(bipoint_curve_subgroupelt).print();
  27. ////ecris(pi_1(beta1+beta2+u1));
  28. //beta=temp+bipoint_curve_subgroupelt;
  29. //beta.makeaffine();
  30. ////private_key.pi_1(beta).print();
  31. //somme.set_bipoint(beta);
  32. //}
  33. //if (type == TWIST)
  34. //{
  35. //Bipoint<twistpoint_fp2_t> beta, temp, bipoint_twist_subgroupelt;
  36. //temp=a.get_bipoint()+b.get_bipoint();
  37. //temp.makeaffine();
  38. //bipoint_twist_subgroupelt.scalarmult_vartime(public_key.get_bipoint_twistgen(),lambda);
  39. //bipoint_twist_subgroupelt.makeaffine();
  40. //beta=temp+bipoint_twist_subgroupelt;
  41. //beta.makeaffine();
  42. //somme.set_bipoint(beta);
  43. //}
  44. ////a.print_bit_masque();
  45. ////b.print_bit_masque();
  46. ////somme.print_bit_masque();
  47. //return somme;
  48. //}
  49. BitEvalL1<curvepoint_fp_t> additionL1 (BitEvalL1<curvepoint_fp_t> a, BitEvalL1<curvepoint_fp_t> b, PublicKey public_key)
  50. {
  51. BitEvalL1<curvepoint_fp_t> somme;
  52. somme.set_bit_masque((a.get_bit_masque()+b.get_bit_masque())%2);
  53. scalar_t lambda;
  54. scalar_setrandom(lambda, bn_r);
  55. Bipoint<curvepoint_fp_t> beta, temp, bipoint_curve_subgroupelt;
  56. //ecris(u+u);
  57. //temp=public_key.get_bipoint_curvegen()+public_key.get_bipoint_curvegen();
  58. //temp.makeaffine();
  59. //temp.print();
  60. //ecris(beta1+beta2);
  61. temp=a.get_bipoint()+b.get_bipoint();
  62. temp.makeaffine();
  63. //temp.print();
  64. //ecris(pi_1(beta1+beta2));
  65. //private_key.pi_1(temp).makeaffine();
  66. //private_key.pi_1(temp).print();
  67. //ecris(pi_1(u1));
  68. bipoint_curve_subgroupelt.scalarmult_vartime(public_key.get_bipoint_curvegen(),lambda);
  69. bipoint_curve_subgroupelt.makeaffine();
  70. //private_key.pi_1(bipoint_curve_subgroupelt).print();
  71. //ecris(pi_1(beta1+beta2+u1));
  72. beta=temp+bipoint_curve_subgroupelt;
  73. beta.makeaffine();
  74. //private_key.pi_1(beta).print();
  75. somme.set_bipoint(beta);
  76. return somme;
  77. }
  78. BitEvalL1<twistpoint_fp2_t> additionL1 (BitEvalL1<twistpoint_fp2_t> a, BitEvalL1<twistpoint_fp2_t> b, PublicKey public_key)
  79. {
  80. BitEvalL1<twistpoint_fp2_t> somme;
  81. somme.set_bit_masque((a.get_bit_masque()+b.get_bit_masque())%2);
  82. scalar_t lambda;
  83. scalar_setrandom(lambda, bn_r);
  84. Bipoint<twistpoint_fp2_t> beta, temp, bipoint_twist_subgroupelt;
  85. temp=a.get_bipoint()+b.get_bipoint();
  86. temp.makeaffine();
  87. bipoint_twist_subgroupelt.scalarmult_vartime(public_key.get_bipoint_twistgen(),lambda);
  88. bipoint_twist_subgroupelt.makeaffine();
  89. beta=temp+bipoint_twist_subgroupelt;
  90. beta.makeaffine();
  91. somme.set_bipoint(beta);
  92. return somme;
  93. }
  94. BitChiffre additionL1 (BitChiffre a, BitChiffre b, PublicKey public_key)
  95. {
  96. //signature;
  97. if (a.get_type() == b.get_type())
  98. {
  99. BitChiffre somme;
  100. somme.set_bit_masque((a.get_bit_masque()+b.get_bit_masque())%2);
  101. scalar_t lambda;
  102. scalar_setrandom(lambda, bn_r);
  103. if (a.get_type() == CURVE)
  104. {
  105. Bipoint<curvepoint_fp_t> beta, temp, bipoint_curve_subgroupelt;
  106. //ecris(u+u);
  107. //temp=public_key.get_bipoint_curvegen()+public_key.get_bipoint_curvegen();
  108. //temp.makeaffine();
  109. //temp.print();
  110. //ecris(beta1+beta2);
  111. temp=a.get_bipoint_curve()+b.get_bipoint_curve();
  112. temp.makeaffine();
  113. //temp.print();
  114. //ecris(pi_1(beta1+beta2));
  115. //private_key.pi_1(temp).makeaffine();
  116. //private_key.pi_1(temp).print();
  117. //ecris(pi_1(u1));
  118. bipoint_curve_subgroupelt.scalarmult_vartime(public_key.get_bipoint_curvegen(),lambda);
  119. bipoint_curve_subgroupelt.makeaffine();
  120. //private_key.pi_1(bipoint_curve_subgroupelt).print();
  121. //ecris(pi_1(beta1+beta2+u1));
  122. beta=temp+bipoint_curve_subgroupelt;
  123. beta.makeaffine();
  124. //private_key.pi_1(beta).print();
  125. somme.set_bipoint_curve(beta);
  126. }
  127. if (a.get_type() == TWIST)
  128. {
  129. Bipoint<twistpoint_fp2_t> beta, temp, bipoint_twist_subgroupelt;
  130. temp=a.get_bipoint_twist()+b.get_bipoint_twist();
  131. temp.makeaffine();
  132. bipoint_twist_subgroupelt.scalarmult_vartime(public_key.get_bipoint_twistgen(),lambda);
  133. bipoint_twist_subgroupelt.makeaffine();
  134. beta=temp+bipoint_twist_subgroupelt;
  135. beta.makeaffine();
  136. somme.set_bipoint_twist(beta);
  137. }
  138. //a.print_bit_masque();
  139. //b.print_bit_masque();
  140. //somme.print_bit_masque();
  141. return somme;
  142. }
  143. else
  144. {
  145. cout << "Problème de type dans additionL1" << endl;
  146. exit(0);
  147. }
  148. }