EC_GROUP_new(3)              OpenSSL              EC_GROUP_new(3)


     EC_GROUP_new, EC_GROUP_free, EC_GROUP_clear_free,
     EC_GROUP_new_curve_GFp, EC_GROUP_new_curve_GF2m,
     EC_GROUP_new_by_curve_name, EC_GROUP_set_curve_GFp,
     EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m,
     EC_GROUP_get_curve_GF2m, EC_get_builtin_curves - Functions
     for creating and destroying EC_GROUP objects.


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

      EC_GROUP *EC_GROUP_new(const EC_METHOD *meth);
      void EC_GROUP_free(EC_GROUP *group);
      void EC_GROUP_clear_free(EC_GROUP *group);

      EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
      EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
      EC_GROUP *EC_GROUP_new_by_curve_name(int nid);

      int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
      int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
      int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
      int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);

      size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);


     Within the library there are two forms of elliptic curve
     that are of interest. The first form is those defined over
     the prime field Fp. The elements of Fp are the integers 0 to
     p-1, where p is a prime number. This gives us a revised
     elliptic curve equation as follows:

     y^2 mod p = x^3 +ax + b mod p

     The second form is those defined over a binary field F2^m
     where the elements of the field are integers of length at
     most m bits. For this form the elliptic curve equation is
     modified to:

     y^2 + xy = x^3 + ax^2 + b (where b != 0)

     Operations in a binary field are performed relative to an
     irreducible polynomial. All such curves with OpenSSL use a
     trinomial or a pentanomial for this parameter.

     A new curve can be constructed by calling EC_GROUP_new,
     using the implementation provided by meth (see
     EC_GFp_simple_method(3)). It is then necessary to call
     either EC_GROUP_set_curve_GFp or EC_GROUP_set_curve_GF2m as
     appropriate to create a curve defined over Fp or over F2^m

1.0.2t               Last change: 2019-09-10                    1

EC_GROUP_new(3)              OpenSSL              EC_GROUP_new(3)


     EC_GROUP_set_curve_GFp sets the curve parameters p, a and b
     for a curve over Fp stored in group.  EC_group_get_curve_GFp
     obtains the previously set curve parameters.

     EC_GROUP_set_curve_GF2m sets the equivalent curve parameters
     for a curve over F2^m. In this case p represents the
     irreducible polybnomial - each bit represents a term in the
     polynomial. Therefore there will either be three or five
     bits set dependant on whether the polynomial is a trinomial
     or a pentanomial.  EC_group_get_curve_GF2m obtains the
     previously set curve parameters.

     The functions EC_GROUP_new_curve_GFp and
     EC_GROUP_new_curve_GF2m are shortcuts for calling
     EC_GROUP_new and the appropriate EC_group_set_curve
     function. An appropriate default implementation method will
     be used.

     Whilst the library can be used to create any curve using the
     functions described above, there are also a number of
     predefined curves that are available. In order to obtain a
     list of all of the predefined curves, call the function
     EC_get_builtin_curves. The parameter r should be an array of
     EC_builtin_curve structures of size nitems. The function
     will populate the r array with information about the builtin
     curves. If nitems is less than the total number of curves
     available, then the first nitems curves will be returned.
     Otherwise the total number of curves will be provided. The
     return value is the total number of curves available
     (whether that number has been populated in r or not).
     Passing a NULL r, or setting nitems to 0 will do nothing
     other than return the total number of curves available.  The
     EC_builtin_curve structure is defined as follows:

      typedef struct {
             int nid;
             const char *comment;
             } EC_builtin_curve;

     Each EC_builtin_curve item has a unique integer id (nid),
     and a human readable comment string describing the curve.

     In order to construct a builtin curve use the function
     EC_GROUP_new_by_curve_name and provide the nid of the curve
     to be constructed.

     EC_GROUP_free frees the memory associated with the EC_GROUP.

     EC_GROUP_clear_free destroys any sensitive data held within
     the EC_GROUP and then frees its memory.

1.0.2t               Last change: 2019-09-10                    2

EC_GROUP_new(3)              OpenSSL              EC_GROUP_new(3)


     All EC_GROUP_new* functions return a pointer to the newly
     constructed group, or NULL on error.

     EC_get_builtin_curves returns the number of builtin curves
     that are available.

     EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp,
     EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m return 1 on
     success or 0 on error.


     crypto(3), ec(3), EC_GROUP_copy(3), EC_POINT_new(3),
     EC_POINT_add(3), EC_KEY_new(3), EC_GFp_simple_method(3),

1.0.2t               Last change: 2019-09-10                    3

Man(1) output converted with man2html