#ifndef TEDWARDS_H #define TEDWARDS_H #include #include "ec.h" // a*x^2+y^2=1+d*x^2*y^2 typedef struct ted_point_t { fp2_t x; fp2_t y; fp2_t z; fp2_t t; // t = x*y/z } ted_point_t; void ted_init(ted_point_t* P); bool is_ted_equal(ted_point_t const* P1, ted_point_t const* P2); void copy_ted_point(ted_point_t* P, ted_point_t const* Q); void ted_neg(ted_point_t* Q, ted_point_t const* P); void ted_dbl(ted_point_t* Q, ted_point_t const* P, ec_curve_t const* E); void ted_add(ted_point_t* S, ted_point_t const* P, ted_point_t const* Q, ec_curve_t const* E); void mont_to_ted(ec_curve_t* E, ec_curve_t const* A); void mont_to_ted_point(ted_point_t* Q, ec_point_t const* P, ec_curve_t const* A); void ted_to_mont_point(ec_point_t* Q, ted_point_t const* P); #endif