EC_GROUP_copy(3) | LibreSSL | EC_GROUP_copy(3) |

# NAME

EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROUP_get0_generator, EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_set_curve_name, EC_GROUP_get_curve_name, EC_GROUP_set_asn1_flag, EC_GROUP_get_asn1_flag, EC_GROUP_set_point_conversion_form, EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed, EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree, EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_cmp, EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis, EC_GROUP_get_pentanomial_basis - Functions for manipulating EC_GROUP objects.# SYNOPSIS

#include <openssl/ec.h>

#include <openssl/bn.h>

int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src);

EC_GROUP *EC_GROUP_dup(const EC_GROUP *src);

const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group);

int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor);

const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group);

int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx);

int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx);

void EC_GROUP_set_curve_name(EC_GROUP *group, int nid);

int EC_GROUP_get_curve_name(const EC_GROUP *group);

void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag);

int EC_GROUP_get_asn1_flag(const EC_GROUP *group);

void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form);

point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *);

unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x);

size_t EC_GROUP_get_seed_len(const EC_GROUP *);

size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len);

int EC_GROUP_get_degree(const EC_GROUP *group);

int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx);

int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx);

int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx);

int EC_GROUP_get_basis_type(const EC_GROUP *);

int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k);

int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1,

unsigned int *k2, unsigned int *k3);

# DESCRIPTION

EC_GROUP_copy copies the curve**src**into

**dst**. Both

**src**and

**dst**must use the same EC_METHOD.

**src**to the newly created EC_GROUP object.

**group**.

**generator**, the

**order**and the

**cofactor**. The

**generator**is a well defined point on the curve chosen for cryptographic operations. Integers used for point multiplications will be between 0 and n-1 where n is the

**order**. The

**order**multipied by the

**cofactor**gives the number of points on the curve.

**group**.

**order**and

**cofactor**parameters with the respective order and cofactors for the

**group**.

*EC_GROUP_new*(3)). If a curve does not have a NID associated with it, then EC_GROUP_get_curve_name will return 0.

typedef enum {

/** the point is encoded as z||x, where the octet z specifies

* which solution of the quadratic equation y is */

POINT_CONVERSION_COMPRESSED = 2,

/** the point is encoded as z||x||y, where z is the octet 0x02 */

POINT_CONVERSION_UNCOMPRESSED = 4,

/** the point is encoded as z||x||y, where the octet z specifies

* which solution of the quadratic equation y is */

POINT_CONVERSION_HYBRID = 6

} point_conversion_form_t;

**a**and

**b**to determine whether they represent the same curve or not.

**k**. Similarly the function EC_GROUP_get_pentanomial_basis must only be called where f(x) is of the pentanomial form, and returns the values of

**k1**,

**k2**and

**k3**respectively.

# RETURN VALUES

The following functions return 1 on success or 0 on error: EC_GROUP_copy, EC_GROUP_set_generator, EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_get_trinomial_basis and EC_GROUP_get_pentanomial_basis.# SEE ALSO

*crypto*(3),

*ec*(3),

*EC_GROUP_new*(3),

*EC_POINT_new*(3),

*EC_POINT_add*(3),

*EC_KEY_new*(3),

*EC_GFp_simple_method*(3),

*d2i_ECPKParameters*(3)

2015-10-26 | LibreSSL |