Point (x,y) on elliptic curve x3 + ax2 + b = y2 + xy. More...
#include <point.h>
Public Types | |
| typedef Polynomial | polynomial_type |
| The type of the field over which the elliptic curve is defined. | |
Public Member Functions | |
| point (void) | |
| Construct the point at infinity (zero). | |
| point (std::string x, std::string y) | |
| Construct a point (x, y) from the strings x and y. | |
| point (polynomial_type const &x, polynomial_type const &y) | |
| Construct a point (x, y) from the polynomials x and y. | |
| point & | operator= (point const &p1) |
| Copy constructor. | |
| point & | operator+= (point const &p1) |
| Add point p1 to this point. | |
| void | MULTIPLY_and_assign (point const &pnt, mpz_class const &scalar) |
| Multiply the point pnt with scalar and assign the result to this object. | |
| mpz_class | order (order_algorithm algorithm=order_default) const |
| Calculate the order of this point. | |
| bool | operator== (point const &p1) const |
| Compare for equality. | |
| bool | operator!= (point const &p1) const |
| Compare for inequality. | |
| bool | check (void) const |
| Check if the current point is a solution of the elliptic curve. | |
| polynomial_type const & | get_x (void) const |
| Retrieve the value of the x coordinate. | |
| polynomial_type const & | get_y (void) const |
| Retrieve the value of the y coordinate. | |
| bool | is_zero (void) const |
| Return if this is the point at infinity or not. | |
| void | print_on (std::ostream &os) const |
| Print the coordinates of this point to an ostream. | |
| void | randomize (rds &random_source) |
| Generate a random point on the curve. | |
Point (x,y) on elliptic curve x3 + ax2 + b = y2 + xy.
This class represents a point (x,y) on the elliptic curve x3 + ax2 + b = y2 + xy where x, y, a and b are of the type Polynomial, elements of F2m.
| typedef Polynomial libecc::point< Polynomial, a, b >::polynomial_type |
The type of the field over which the elliptic curve is defined.
| libecc::point< Polynomial, a, b >::point | ( | void | ) | [inline] |
Construct the point at infinity (zero).
| libecc::point< Polynomial, a, b >::point | ( | std::string | x, | |
| std::string | y | |||
| ) | [inline] |
Construct a point (x, y) from the strings x and y.
The strings are passed directly to two variables of type polynomial_type.
| libecc::point< Polynomial, a, b >::point | ( | polynomial_type const & | x, | |
| polynomial_type const & | y | |||
| ) | [inline] |
Construct a point (x, y) from the polynomials x and y.
| bool libecc::point< Polynomial, a, b >::check | ( | void | ) | const |
Check if the current point is a solution of the elliptic curve.
| polynomial_type const& libecc::point< Polynomial, a, b >::get_x | ( | void | ) | const [inline] |
Retrieve the value of the x coordinate.
This value is only valid when is_zero returns false.
| polynomial_type const& libecc::point< Polynomial, a, b >::get_y | ( | void | ) | const [inline] |
Retrieve the value of the y coordinate.
This value is only valid when is_zero returns false.
| bool libecc::point< Polynomial, a, b >::is_zero | ( | void | ) | const [inline] |
Return if this is the point at infinity or not.
| void libecc::point< Polynomial, a, b >::MULTIPLY_and_assign | ( | point< Polynomial, a, b > const & | pnt, | |
| mpz_class const & | scalar | |||
| ) |
Multiply the point pnt with scalar and assign the result to this object.
| bool libecc::point< Polynomial, a, b >::operator!= | ( | point< Polynomial, a, b > const & | p1 | ) | const [inline] |
Compare for inequality.
Referenced by libecc::point< Polynomial, a, b >::operator==().
| point< Polynomial, a, b > & libecc::point< Polynomial, a, b >::operator+= | ( | point< Polynomial, a, b > const & | p1 | ) |
Add point p1 to this point.
| point< Polynomial, a, b > & libecc::point< Polynomial, a, b >::operator= | ( | point< Polynomial, a, b > const & | p1 | ) |
Copy constructor.
| bool libecc::point< Polynomial, a, b >::operator== | ( | point< Polynomial, a, b > const & | p1 | ) | const [inline] |
Compare for equality.
References libecc::point< Polynomial, a, b >::operator!=().
| mpz_class libecc::point< Polynomial, a, b >::order | ( | order_algorithm | algorithm = order_default |
) | const |
Calculate the order of this point.
| void libecc::point< Polynomial, a, b >::print_on | ( | std::ostream & | os | ) | const |
Print the coordinates of this point to an ostream.
| void libecc::point< Polynomial, a, b >::randomize | ( | rds & | random_source | ) |
Generate a random point on the curve.