Sortix volatile manual
This manual documents Sortix volatile, a development build that has not been officially released. You can instead view this document in the latest official manual.
| EC_POINT_ADD(3) | Library Functions Manual | EC_POINT_ADD(3) | 
NAME
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_POINTs_make_affine,
    EC_POINTs_mul, EC_POINT_mul,
    EC_GROUP_precompute_mult,
    EC_GROUP_have_precompute_mult —
    perform mathematical operations and tests on EC_POINT
    objects
SYNOPSIS
#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_POINTs_make_affine(const EC_GROUP
    *group, size_t num, EC_POINT
    *points[], BN_CTX *ctx);
int
  
  EC_POINTs_mul(const EC_GROUP
    *group, EC_POINT *r, const
    BIGNUM *n, size_t num, const
    EC_POINT *p[], const BIGNUM *m[],
    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);
int
  
  EC_GROUP_precompute_mult(EC_GROUP
    *group, BN_CTX *ctx);
int
  
  EC_GROUP_have_precompute_mult(const
    EC_GROUP *group);
DESCRIPTION
These functions operate on EC_POINT objects created by EC_POINT_new(3).
EC_POINT_add()
    adds the two points a and b and
    places the result in r. Similarly
    EC_POINT_dbl()
    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.
EC_POINT_invert()
    calculates the inverse of the supplied point a. The
    result is placed back in a.
The function
    EC_POINT_is_at_infinity()
    tests whether the supplied point is at infinity or not.
EC_POINT_is_on_curve()
    tests whether the supplied point is on the curve or not.
EC_POINT_cmp()
    compares the two supplied points and tests whether or not they are
  equal.
The functions
    EC_POINT_make_affine()
    and
    EC_POINTs_make_affine()
    force the internal representation of the EC_POINTs
    into the affine coordinate system. In the case of
    EC_POINTs_make_affine(), the value
    num provides the number of points in the array
    points to be forced.
EC_POINT_mul()
    calculates the value
and stores the result in r. The value
    n may be NULL, in which case
    the result is just
q * m.EC_POINTs_mul()
    only supports the values 0 and 1 for num. If it is 1,
    then EC_POINTs_mul() calculates the value
generator * n + q[0] *
  m[0].If num is 0 then q and
    m must be NULL, and the result
    is just
generator * nAs for
    EC_POINT_mul(),
    the value n may be NULL.
The function
    EC_GROUP_precompute_mult()
    stores multiples of the generator for faster point multiplication, whilst
    EC_GROUP_have_precompute_mult()
    tests whether precomputation has already been done. See
    EC_GROUP_copy(3) for
    information about the generator.
RETURN VALUES
The following functions return 1 on success or 0 on error:
    EC_POINT_add(),
    EC_POINT_dbl(),
    EC_POINT_invert(),
    EC_POINT_make_affine(),
    EC_POINTs_make_affine(),
    EC_POINT_mul(),
    EC_POINTs_mul(), and
    EC_GROUP_precompute_mult().
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.
EC_GROUP_have_precompute_mult() returns 1
    if a precomputation has been done or 0 if not.
SEE ALSO
d2i_ECPKParameters(3), EC_GFp_simple_method(3), EC_GROUP_copy(3), EC_GROUP_new(3), EC_KEY_new(3), EC_POINT_new(3)
HISTORY
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_POINTs_make_affine(),
    EC_POINTs_mul(),
    EC_POINT_mul(), and
    EC_GROUP_precompute_mult() first appeared in OpenSSL
    0.9.7 and have been available since OpenBSD 3.2.
EC_GROUP_have_precompute_mult() first
    appeared in OpenSSL 0.9.8 and has been available since
    OpenBSD 4.5.
| April 12, 2023 | Sortix 1.1.0-dev | 
