Quadripoint.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include "Quadripoint.hpp"
  2. Quadripoint::Quadripoint()
  3. {
  4. fp12e_setone(point[0]);
  5. fp12e_setone(point[1]);
  6. fp12e_setone(point[2]);
  7. fp12e_setone(point[3]);
  8. }
  9. Quadripoint::Quadripoint(const fp12e_t& p1, const fp12e_t& p2, const fp12e_t& p3, const fp12e_t& p4)
  10. {
  11. fp12e_set(point[0], p1);
  12. fp12e_set(point[1], p2);
  13. fp12e_set(point[2], p3);
  14. fp12e_set(point[3], p4);
  15. }
  16. fp12e_t& Quadripoint::operator[](int n)
  17. {
  18. return point[n];
  19. }
  20. const fp12e_t& Quadripoint::operator[](int n) const
  21. {
  22. return point[n];
  23. }
  24. Quadripoint Quadripoint::operator*(const Quadripoint& b) const
  25. {
  26. Quadripoint retval;
  27. fp12e_mul(retval[0], point[0], b.point[0]);
  28. fp12e_mul(retval[1], point[1], b.point[1]);
  29. fp12e_mul(retval[2], point[2], b.point[2]);
  30. fp12e_mul(retval[3], point[3], b.point[3]);
  31. return retval;
  32. }
  33. Quadripoint Quadripoint::operator^(const scalar_t& exp) const
  34. {
  35. Quadripoint retval;
  36. fp12e_pow_vartime(retval[0], point[0], exp);
  37. fp12e_pow_vartime(retval[1], point[1], exp);
  38. fp12e_pow_vartime(retval[2], point[2], exp);
  39. fp12e_pow_vartime(retval[3], point[3], exp);
  40. return retval;
  41. }
  42. bool Quadripoint::operator==(const Quadripoint& b) const
  43. {
  44. bool retval = fp12e_iseq(point[0], b[0]);
  45. retval &&= fp12e_iseq(point[1], b[1]);
  46. retval &&= fp12e_iseq(point[2], b[2]);
  47. retval &&= fp12e_iseq(point[3], b[3]);
  48. return retval;
  49. }
  50. Quadripoint Quadripoint::square() const
  51. {
  52. Quadripoint retval;
  53. fp12e_square(retval[0], point[0]);
  54. fp12e_square(retval[1], point[1]);
  55. fp12e_square(retval[2], point[2]);
  56. fp12e_square(retval[3], point[3]);
  57. return retval;
  58. }