Sortix 1.1dev ports manual
This manual documents Sortix 1.1dev ports. You can instead view this document in the latest official manual.
EC_KEY_METHOD_NEW(3) | 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 implementationsSYNOPSIS
#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)); #include <openssl/ecdsa.h> 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)); #include <openssl/ec.h> 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 isNULL
.
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)
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_ex(3),
ECDSA_sign_setup(3),
and
ECDSA_do_sign_ex(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 given
engine, or the using the
EC_KEY_METHOD set with
EC_KEY_set_default_method() if
engine is
NULL
, or using the default EC_KEY
implementation by default.
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 orNULL
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.August 16, 2019 | Debian |