OpenBSD manual page server

Manual Page Search Parameters

EC_POINT_ADD(3) Library Functions Manual EC_POINT_ADD(3)

EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_is_at_infinity, EC_POINT_is_on_curve, EC_POINT_cmp, EC_POINT_make_affine, EC_POINT_mulperform mathematical operations and tests on EC_POINT objects

#include <openssl/ec.h>
#include <openssl/bn.h>

int
EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx);

int
EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx);

int
EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx);

int
EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p);

int
EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *ctx);

int
EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx);

int
EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx);

int
EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx);

These functions operate on EC_POINT objects created by EC_POINT_new(3).

() adds the two points a and b and places the result in r. Similarly () doubles the point a and places the result in r. In both cases it is valid for r to be one of a or b.

() calculates the inverse of the supplied point a. The result is placed back in a.

The function () tests whether the supplied point is at infinity or not.

() tests whether the supplied point is on the curve or not.

() compares the two supplied points and tests whether or not they are equal.

() calculates the value

generator * n + q * m

and stores the result in r. The value n may be NULL, in which case the result is just

q * m.

See EC_GROUP_new_curve_GFp(3) for information about the generator.

The following functions return 1 on success or 0 on error: EC_POINT_add(), EC_POINT_dbl(), EC_POINT_invert(), EC_POINT_make_affine(), and EC_POINT_mul()

EC_POINT_is_at_infinity() returns 1 if the point is at infinity or 0 otherwise.

EC_POINT_is_on_curve() returns 1 if the point is on the curve, 0 if not, or -1 on error.

EC_POINT_cmp() returns 1 if the points are not equal, 0 if they are, or -1 on error.

crypto(3), d2i_ECPKParameters(3), EC_GROUP_check(3), EC_GROUP_get_curve_name(3), EC_GROUP_new_by_curve_name(3), EC_GROUP_new_curve_GFp(3), EC_KEY_METHOD_new(3), EC_KEY_new(3), EC_POINT_get_affine_coordinates(3), EC_POINT_new(3), EC_POINT_point2oct(3)

EC_POINT_add(), EC_POINT_dbl(), EC_POINT_invert(), EC_POINT_is_at_infinity(), EC_POINT_is_on_curve(), EC_POINT_cmp(), EC_POINT_make_affine(), and EC_POINT_mul() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 3.2.

April 25, 2025 OpenBSD-current