-.\" $OpenBSD: EC_GROUP_new.3,v 1.14 2022/03/31 17:27:16 naddy Exp $
+.\" $OpenBSD: EC_GROUP_new.3,v 1.15 2023/04/27 09:35:20 tb Exp $
.\" OpenSSL 6328d367 Sat Jul 4 21:58:30 2020 +0200
.\"
.\" This file was written by Matt Caswell <matt@openssl.org>.
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd $Mdocdate: March 31 2022 $
+.Dd $Mdocdate: April 27 2023 $
.Dt EC_GROUP_NEW 3
.Os
.Sh NAME
.Nm EC_GROUP_free ,
.Nm EC_GROUP_clear_free ,
.Nm EC_GROUP_new_curve_GFp ,
-.Nm EC_GROUP_new_curve_GF2m ,
.Nm EC_GROUP_new_by_curve_name ,
.Nm EC_GROUP_set_curve ,
.Nm EC_GROUP_get_curve ,
.Nm EC_GROUP_set_curve_GFp ,
.Nm EC_GROUP_get_curve_GFp ,
-.Nm EC_GROUP_set_curve_GF2m ,
-.Nm EC_GROUP_get_curve_GF2m ,
.Nm EC_get_builtin_curves
.Nd create and destroy EC_GROUP objects
.Sh SYNOPSIS
.Fa "BN_CTX *ctx"
.Fc
.Ft EC_GROUP *
-.Fo EC_GROUP_new_curve_GF2m
-.Fa "const BIGNUM *p"
-.Fa "const BIGNUM *a"
-.Fa "const BIGNUM *b"
-.Fa "BN_CTX *ctx"
-.Fc
-.Ft EC_GROUP *
.Fo EC_GROUP_new_by_curve_name
.Fa "int nid"
.Fc
.Fa "BIGNUM *b"
.Fa "BN_CTX *ctx"
.Fc
-.Ft int
-.Fo EC_GROUP_set_curve_GF2m
-.Fa "EC_GROUP *group"
-.Fa "const BIGNUM *p"
-.Fa "const BIGNUM *a"
-.Fa "const BIGNUM *b"
-.Fa "BN_CTX *ctx"
-.Fc
-.Ft int
-.Fo EC_GROUP_get_curve_GF2m
-.Fa "const EC_GROUP *group"
-.Fa "BIGNUM *p"
-.Fa "BIGNUM *a"
-.Fa "BIGNUM *b"
-.Fa "BN_CTX *ctx"
-.Fc
.Ft size_t
.Fo EC_get_builtin_curves
.Fa "EC_builtin_curve *r"
.Pp
.Dl y^2 = x^3 + ax + b
.Pp
-Within the library there are two forms of elliptic curves 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
-.Fa p
-is a prime number.
-This gives us a revised elliptic curve equation as follows:
-.Pp
-.Dl y^2 mod p = x^3 + ax + b mod p
-.Pp
-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:
-.Pp
-.Dl y^2 + xy = x^3 + ax^2 + b (where b != 0)
-.Pp
-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.
-.Pp
An
.Vt EC_GROUP
structure is used to represent the definition of an elliptic curve.
.Fa p ,
.Fa a ,
and
-.Fa b .
-For a curve over Fp,
-.Fa p
-is the prime for the field.
-For a curve over F2^m
-.Fa p
-represents the irreducible polynomial - each bit represents a term in
-the polynomial.
-Therefore, there will either be three or five bits set dependent on
-whether the polynomial is a trinomial or a pentanomial.
-In either case,
+.Fa b ,
+where
.Fa a
and
.Fa b
represent the coefficients of the curve equation.
.Pp
.Fn EC_GROUP_set_curve_GFp
-and
-.Fn EC_GROUP_set_curve_GF2m
-are deprecated synonyms for
+is a deprecated synonym for
.Fn EC_GROUP_set_curve .
.Pp
.Fn EC_GROUP_get_curve
obtains the previously set curve parameters.
.Pp
.Fn EC_GROUP_get_curve_GFp
-and
-.Fn EC_GROUP_get_curve_GF2m
-are deprecated synonyms for
+is a deprecated synonym for
.Fn EC_GROUP_get_curve .
.Pp
-The functions
+The function
.Fn EC_GROUP_new_curve_GFp
-and
-.Fn EC_GROUP_new_curve_GF2m
-are shortcuts for calling
+is a shortcut for calling
.Fn EC_GROUP_new
-and the appropriate
-.Fn EC_GROUP_set_curve_*
-function.
+and
+.Fn EC_GROUP_set_curve .
An appropriate default implementation method will be used.
.Pp
Whilst the library can be used to create any curve using the functions
.Fn EC_GROUP_set_curve ,
.Fn EC_GROUP_get_curve ,
.Fn EC_GROUP_set_curve_GFp ,
-.Fn EC_GROUP_get_curve_GFp ,
-.Fn EC_GROUP_set_curve_GF2m ,
and
-.Fn EC_GROUP_get_curve_GF2m
+.Fn EC_GROUP_get_curve_GFp
return 1 on success or 0 on error.
.Sh SEE ALSO
.Xr crypto 3 ,
first appeared in OpenSSL 0.9.7 and have been available since
.Ox 3.2 .
.Pp
-.Fn EC_GROUP_new_curve_GF2m ,
.Fn EC_GROUP_new_by_curve_name ,
-.Fn EC_GROUP_set_curve_GF2m ,
-.Fn EC_GROUP_get_curve_GF2m ,
and
.Fn EC_get_builtin_curves
first appeared in OpenSSL 0.9.8 and have been available since