EC_GFP_SIMPLE_METHOD(3ossl)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

πŸ’… NAME πŸ’…

Okay bestie, so this page is all about getting your hands on EC_METHOD objects ✨ β€” here's the whole squad: EC_GFp_simple_method, EC_GFp_mont_method, EC_GFp_nist_method, EC_GFp_nistp224_method, EC_GFp_nistp256_method, EC_GFp_nistp521_method, EC_GF2m_simple_method, and EC_METHOD_get_field_type.

(Fr fr, the manpage name is EC_GFP_SIMPLE_METHOD, name 3ossl β€” iconic, no notes πŸŽ€)


🌸 SYNOPSIS 🌸

#include <openssl/ec.h>

So… heads up, bestie: the following functions have been deprecated since OpenSSL 3.0, and you can hide them entirely by defining OPENSSL_API_COMPAT with a suitable version value β€” see openssl_user_macros(7) 🫢

const EC_METHOD *EC_GFp_simple_method(void);
const EC_METHOD *EC_GFp_mont_method(void);
const EC_METHOD *EC_GFp_nist_method(void);
const EC_METHOD *EC_GFp_nistp224_method(void);
const EC_METHOD *EC_GFp_nistp256_method(void);
const EC_METHOD *EC_GFp_nistp521_method(void);

const EC_METHOD *EC_GF2m_simple_method(void);

int EC_METHOD_get_field_type(const EC_METHOD *meth);

✨ DESCRIPTION ✨

Lowkey big news first: all those const EC_METHOD *EC_GF* functions got deprecated in OpenSSL 3.0, because EC_METHOD is no longer a public concept. Rip to a real one 😭

So here's the vibe πŸ’« β€” the Elliptic Curve library serves up a bunch of different implementations through one single common interface. When you're constructing a curve using EC_GROUP_new (peep EC_GROUP_new(3)), you must provide an implementation method. All the functions described here return a const pointer to an EC_METHOD structure that can be passed to EC_GROUP_NEW. And it's important β€” like, actually important β€” that you use the correct implementation type for the form of curve you selected. Main character energy only πŸ‘‘

For F2^m curves there's literally only one implementation choice, i.e. EC_GF2_simple_method. Slay, no decisions to make πŸ’…

For Fp curves, the lowest common denominator implementation is the EC_GFp_simple_method implementation β€” and all the other implementations are based on this one 🧚

  • EC_GFp_mont_method builds on EC_GFp_simple_method but adds the use of montgomery multiplication (see BN_mod_mul_montgomery(3)).
  • EC_GFp_nist_method offers an implementation optimised for use with NIST recommended curves (NIST curves are available through EC_GROUP_new_by_curve_name as described in EC_GROUP_new(3)).

And then the 64-bit glow-up squad πŸ”₯ β€” EC_GFp_nistp224_method, EC_GFp_nistp256_method and EC_GFp_nistp521_method offer 64 bit optimised implementations for the NIST P224, P256 and P521 curves respectively. ⭐

Note, however, that these implementations are not available on all platforms. 🫠 Not me getting excited for nothing on some architectures.

Also EC_METHOD_get_field_type() was deprecated in OpenSSL 3.0. Applications should use EC_GROUP_get_field_type() as a replacement (see EC_GROUP_copy(3)). Upgrade your faves, bestie πŸ’–


πŸ¦‹ RETURN VALUES πŸ¦‹

All EC_GFp* functions and EC_GF2m_simple_method always return a const pointer to an EC_METHOD structure. Every single time. No surprises, we love consistency ✨

EC_METHOD_get_field_type returns an integer that identifies the type of field the EC_METHOD structure supports. It's giving "just an int" but make it meaningful πŸ’œ


🌈 SEE ALSO 🌈

crypto(7), EC_GROUP_new(3), EC_GROUP_copy(3), EC_POINT_new(3), EC_POINT_add(3), EC_KEY_new(3), d2i_ECPKParameters(3), BN_mod_mul_montgomery(3)

Go read them, iykyk πŸ“š


πŸŽ€ HISTORY πŸŽ€

EC_GFp_simple_method(), EC_GFp_mont_method(void), EC_GFp_nist_method(), EC_GFp_nistp224_method(), EC_GFp_nistp256_method(), EC_GFp_nistp521_method(), EC_GF2m_simple_method(), and EC_METHOD_get_field_type() were deprecated in OpenSSL 3.0. That's the whole history section, periodt πŸ’€


Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. 🫢

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.


🌸 and that's the whole page, bestie!! this one came from OpenSSL 3.5.6, dated 2026-04-07, and it's filed under EC_GFP_SIMPLE_METHOD(3ossl) β€” go forth and pick the right EC_METHOD, ily, bye πŸ’–βœ¨
πŸ“¦ where this page comes from