Manual Page Result
0
Command: EC_KEY_METHOD_new | Section: 3 | Source: OpenBSD | File: EC_KEY_METHOD_new.3
EC_KEY_METHOD_NEW(3) FreeBSD Library Functions Manual EC_KEY_METHOD_NEW(3)
NAME
EC_KEY_METHOD_new, EC_KEY_METHOD_free, EC_KEY_METHOD_set_init,
EC_KEY_METHOD_get_init, EC_KEY_METHOD_set_sign, EC_KEY_METHOD_get_sign,
EC_KEY_METHOD_set_verify, EC_KEY_METHOD_get_verify,
EC_KEY_METHOD_set_keygen, EC_KEY_METHOD_get_keygen,
EC_KEY_METHOD_set_compute_key, EC_KEY_METHOD_get_compute_key,
EC_KEY_OpenSSL, EC_KEY_set_default_method, EC_KEY_get_default_method,
EC_KEY_new_method, EC_KEY_set_method, EC_KEY_get_method - custom EC_KEY
implementations
SYNOPSIS
#include <openssl/ec.h>
EC_KEY_METHOD *
EC_KEY_METHOD_new(const EC_KEY_METHOD *meth);
void
EC_KEY_METHOD_free(EC_KEY_METHOD *meth);
void
EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, int (*init)(EC_KEY *key),
void (*finish)(EC_KEY *key),
int (*copy)(EC_KEY *dest, const EC_KEY *src),
int (*set_group)(EC_KEY *key, const EC_GROUP *grp),
int (*set_private)(EC_KEY *key, const BIGNUM *priv_key),
int (*set_public)(EC_KEY *key, const EC_POINT *pub_key));
void
EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth,
int (**pinit)(EC_KEY *key), void (**pfinish)(EC_KEY *key),
int (**pcopy)(EC_KEY *dest, const EC_KEY *src),
int (**pset_group)(EC_KEY *key, const EC_GROUP *grp),
int (**pset_private)(EC_KEY *key, const BIGNUM *priv_key),
int (**pset_public)(EC_KEY *key, const EC_POINT *pub_key));
void
EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth,
int (*sign)(int type, const
unsigned char *dgst, int dgstlen,
unsigned char *sig, unsigned int
*siglen, const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey),
int
(*sign_setup)(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM
**rp),
ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, int dgstlen,
const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey));
void
EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth,
int (**psign)(int type,
const unsigned char *dgst, int dgstlen,
unsigned char *sig, unsigned
int *siglen, const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey),
int
(**psign_setup)(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM
**rp),
ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, int
dgstlen, const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey));
void
EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth,
int (*verify)(int type,
const unsigned char *dgst, int dgst_len,
const unsigned char *sigbuf, int sig_len, EC_KEY *eckey),
int
(*verify_sig)(const unsigned char *dgst, int dgst_len, const
ECDSA_SIG *sig, EC_KEY *eckey));
void
EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth,
int (**pverify)(int
type, const unsigned char *dgst, int dgst_len,
const unsigned char *sigbuf, int sig_len, EC_KEY *eckey),
int
(**pverify_sig)(const unsigned char *dgst, int dgst_len, const
ECDSA_SIG *sig, EC_KEY *eckey));
void
EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth,
int (*keygen)(EC_KEY *key));
void
EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth,
int (**pkeygen)(EC_KEY *key));
void
EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth,
int (*ckey)(void *out,
size_t outlen, const EC_POINT *pub_key, EC_KEY
*ecdh, void *(*KDF)
(const void *in, size_t inlen, void *out, size_t *outlen)));
void
EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth,
int (**pck)(void
*out, size_t outlen, const EC_POINT *pub_key, EC_KEY
*ecdh, void
*(*KDF) (const void *in, size_t inlen, void *out, size_t *outlen)));
const EC_KEY_METHOD *
EC_KEY_OpenSSL(void);
void
EC_KEY_set_default_method(const EC_KEY_METHOD *meth);
const EC_KEY_METHOD *
EC_KEY_get_default_method(void);
EC_KEY *
EC_KEY_new_method(ENGINE *engine);
int
EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth);
const EC_KEY_METHOD *
EC_KEY_get_method(const EC_KEY *key);
DESCRIPTION
An EC_KEY_METHOD object holds function pointers used for EC_KEY
operations.
EC_KEY_METHOD_new() creates a shallow copy of meth, or an empty
EC_KEY_METHOD object if meth is NULL.
EC_KEY_METHOD_free() frees meth. If meth is NULL or the return value of
EC_KEY_OpenSSL(), no action occurs.
EC_KEY_METHOD_set_init() and EC_KEY_METHOD_get_init() set and retrieve
optional callback functions called at the following places:
init at the end of EC_KEY_new_method() and EC_KEY_set_method()
finish at the beginning of EC_KEY_free(3), EC_KEY_copy(3), and
EC_KEY_set_method()
copy at the end of EC_KEY_copy(3)
set_group at the end of EC_KEY_set_group(3) and
EC_KEY_new_by_curve_name(3)
set_private at the beginning of EC_KEY_set_private_key(3)
set_public at the beginning of EC_KEY_set_public_key(3)
If any of these callbacks returns 0, the calling function fails. By
default, all these callbacks are NULL. Arguments of
EC_KEY_METHOD_get_init() can be set to NULL to selectively retrieve
callback function pointers.
EC_KEY_METHOD_set_sign() and EC_KEY_METHOD_get_sign() set and retrieve
the functions implementing ECDSA_sign(3) and ECDSA_do_sign(3).
EC_KEY_METHOD_set_verify() and EC_KEY_METHOD_get_verify() set and
retrieve the functions implementing ECDSA_verify(3) and
ECDSA_do_verify(3).
EC_KEY_METHOD_set_keygen() and EC_KEY_METHOD_get_keygen() set and
retrieve the function implementing EC_KEY_generate_key(3).
EC_KEY_METHOD_set_compute_key() and EC_KEY_METHOD_get_compute_key() set
and retrieve the function implementing ECDH_compute_key(3).
EC_KEY_set_default_method() chooses the meth to be used for the creation
of new EC_KEY objects by future invocations of EC_KEY_new_method(), or
reverts to the default implementation if meth is NULL.
EC_KEY_new_method() creates and initializes a new EC_KEY object using the
EC_KEY_METHOD set with EC_KEY_set_default_method(). The ENGINE *engine
argument is always ignored and passing NULL is recommended.
EC_KEY_set_method() dissociates the key from the ENGINE it is using, if
any, and causes it to use meth in the future.
RETURN VALUES
EC_KEY_METHOD_new() returns the newly allocated EC_KEY_METHOD object or
NULL if an error occurs.
EC_KEY_OpenSSL() returns a static object representing the default EC_KEY
implementation.
EC_KEY_get_default_method() returns the EC_KEY_METHOD that
EC_KEY_new_method() will use for the creation of new EC_KEY objects in
the future.
EC_KEY_new_method() returns the newly allocated EC_KEY object or NULL if
an error occurs.
EC_KEY_set_method() returns 1 for success or 0 for failure.
EC_KEY_get_method() returns the EC_KEY implementation used by the given
key.
SEE ALSO
EC_KEY_new(3), ECDSA_sign(3)
HISTORY
These functions first appeared in OpenSSL 1.1.0 and have been available
since OpenBSD 6.5.
FreeBSD 14.1-RELEASE-p8 July 21, 2024 FreeBSD 14.1-RELEASE-p8