Sortix 1.1dev ports manual
This manual documents Sortix 1.1dev ports. You can instead view this document in the latest official manual.
RSA_METH_NEW(3) | Library Functions Manual | RSA_METH_NEW(3) |
NAME
RSA_meth_new, RSA_meth_dup, RSA_meth_free, RSA_meth_get0_name, RSA_meth_set1_name, RSA_meth_get_flags, RSA_meth_set_flags, RSA_meth_get0_app_data, RSA_meth_set0_app_data, RSA_meth_get_init, RSA_meth_set_init, RSA_meth_get_finish, RSA_meth_set_finish, RSA_meth_get_pub_enc, RSA_meth_set_pub_enc, RSA_meth_get_pub_dec, RSA_meth_set_pub_dec, RSA_meth_get_priv_enc, RSA_meth_set_priv_enc, RSA_meth_get_priv_dec, RSA_meth_set_priv_dec, RSA_meth_get_sign, RSA_meth_set_sign, RSA_meth_get_verify, RSA_meth_set_verify, RSA_meth_get_mod_exp, RSA_meth_set_mod_exp, RSA_meth_get_bn_mod_exp, RSA_meth_set_bn_mod_exp, RSA_meth_get_keygen, RSA_meth_set_keygen — build up RSA methodsSYNOPSIS
#include <openssl/rsa.h> RSA_METHOD *RSA_meth_new(const char *name, int flags); RSA_METHOD *
RSA_meth_dup(const RSA_METHOD *meth); void
RSA_meth_free(RSA_METHOD *meth); const char *
RSA_meth_get0_name(const RSA_METHOD *meth); int
RSA_meth_set1_name(RSA_METHOD *meth, const char *name); int
RSA_meth_get_flags(const RSA_METHOD *meth); int
RSA_meth_set_flags(RSA_METHOD *meth, int flags); void *
RSA_meth_get0_app_data(const RSA_METHOD *meth); int
RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data); int
(*RSA_meth_get_init(const RSA_METHOD *meth))(RSA *rsa); int
RSA_meth_set_init(RSA_METHOD *meth, int (*init)(RSA *rsa)); int
(*RSA_meth_get_finish(const RSA_METHOD *meth))(RSA *rsa); int
RSA_meth_set_finish(RSA_METHOD *meth, int (*finish)(RSA *rsa)); int
(*RSA_meth_get_pub_enc(const RSA_METHOD *meth))(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding); int
RSA_meth_set_pub_enc(RSA_METHOD *meth, int (*pub_enc)(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding)); int
(*RSA_meth_get_pub_dec(const RSA_METHOD *meth))(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding); int
RSA_meth_set_pub_dec(RSA_METHOD *meth, int (*pub_dec)(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding)); int
(*RSA_meth_get_priv_enc(const RSA_METHOD *meth))(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding); int
RSA_meth_set_priv_enc(RSA_METHOD *meth, int (*priv_enc)(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding)); int
(*RSA_meth_get_priv_dec(const RSA_METHOD *meth))(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding); int
RSA_meth_set_priv_dec(RSA_METHOD *meth, int (*priv_dec)(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding)); int
(*RSA_meth_get_sign(const RSA_METHOD *meth))(int type, const unsigned char *m, unsigned int m_length, unsigned char *sigret, unsigned int *siglen, const RSA *rsa); int
RSA_meth_set_sign(RSA_METHOD *rsa, int (*sign)(int type, const unsigned char *m, unsigned int m_length, unsigned char *sigret, unsigned int *siglen, const RSA *rsa)); int
(*RSA_meth_get_verify(const RSA_METHOD *meth))(int dtype, const unsigned char *m, unsigned int m_length, const unsigned char *sigbuf, unsigned int siglen, const RSA *rsa); int
RSA_meth_set_verify(RSA_METHOD *rsa, int (*verify)(int dtype, const unsigned char *m, unsigned int m_length, const unsigned char *sigbuf, unsigned int siglen, const RSA *rsa)); int
(*RSA_meth_get_mod_exp(const RSA_METHOD *meth))(BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); int
RSA_meth_set_mod_exp(RSA_METHOD *meth, int (*mod_exp)(BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx)); int
(*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth))(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); int
RSA_meth_set_bn_mod_exp(RSA_METHOD *meth, int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)); int
(*RSA_meth_get_keygen(const RSA_METHOD *meth))(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); int
RSA_meth_set_keygen(RSA_METHOD *meth, int (*keygen)(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb));
DESCRIPTION
The RSA_METHOD structure holds function pointers for custom RSA implementations. RSA_meth_new() creates a new RSA_METHOD structure. A copy of the NUL-terminated name is stored in the new RSA_METHOD object. Any new RSA object constructed from this RSA_METHOD will have the given flags set by default, as if they were set with RSA_set_flags(3). RSA_meth_dup() creates a deep copy of meth, except that a pointer stored into it with RSA_meth_set0_app_data() is copied as a pointer without creating a copy of its content. This might be useful for creating a new RSA_METHOD based on an existing one, but with some differences. RSA_meth_free() destroys meth and frees any memory associated with it, except that memory pointed to by a pointer set with RSA_meth_set0_app_data() is not freed. If meth isNULL
, no action occurs.
RSA_meth_get0_name() returns an internal pointer to
the name of meth.
RSA_meth_set1_name() stores a copy of the
NUL-terminated name in the
RSA_METHOD object after freeing the
previously stored name. Method names are ignored by the default RSA
implementation but can be used by alternative implementations and by the
application program.
RSA_meth_get_flags() retrieves the flags from
meth. Flags are documented in
RSA_test_flags(3).
RSA_meth_set_flags() overwrites all flags in
meth. Unlike
RSA_set_flags(3),
it does not preserve any flags that were set before the call.
RSA_meth_get0_app_data() and
RSA_meth_set0_app_data() get and set a pointer to
implementation-specific data. The function
RSA_meth_free() does not
free(3) the memory
pointed to by app_data. The default RSA
implementation does not use app_data.
RSA_meth_get_init() and
RSA_meth_set_init() get and set an optional
function used when creating a new RSA object.
Unless init is
NULL
, it will be called at the end of
RSA_new(3),
RSA_new_method(3),
and
RSA_set_method(3),
passing a pointer to the newly allocated or reset
RSA object as an argument. The default RSA
implementation,
RSA_PKCS1_SSLeay(3),
contains an init function equivalent to
calling
RSA_set_flags(3)
with an argument of RSA_FLAG_CACHE_PUBLIC
|
RSA_FLAG_CACHE_PRIVATE
.
RSA_meth_get_finish() and
RSA_meth_set_finish() get and set an optional
function for destroying an RSA object. Unless
finish is
NULL
, it will be called from
RSA_set_method(3)
and from
RSA_free(3). It
takes the same argument as
RSA_free(3) and is
intended to do RSA implementation specific cleanup. The memory used by the
RSA object itself should not be freed by the
finish function. The default RSA
implementation contains a finish function
freeing the memory used by the
RSA_FLAG_CACHE_PUBLIC
and
RSA_FLAG_CACHE_PRIVATE
caches.
RSA_meth_get_pub_enc(),
RSA_meth_set_pub_enc(),
RSA_meth_get_pub_dec(),
RSA_meth_set_pub_dec(),
RSA_meth_get_priv_enc(),
RSA_meth_set_priv_enc(),
RSA_meth_get_priv_dec(), and
RSA_meth_set_priv_dec() get and set the mandatory
functions used for public and private key encryption and decryption. These
functions will be called from
RSA_public_encrypt(3),
RSA_public_decrypt(3),
RSA_private_encrypt(3),
and
RSA_private_decrypt(3),
respectively, and take the same parameters as those.
RSA_meth_get_sign(),
RSA_meth_set_sign(),
RSA_meth_get_verify(), and
RSA_meth_set_verify() get and set the optional
functions used for creating and verifying an RSA signature. If the flag
RSA_FLAG_SIGN_VER
is set on the
RSA object in question and
sign or
verify is not
NULL
, it will be called from
RSA_sign(3) or
RSA_verify(3),
respectively, and take the same parameters as those. Otherwise,
RSA_private_encrypt(3)
or
RSA_public_decrypt(3)
will be used instead.
RSA_meth_get_mod_exp() and
RSA_meth_set_mod_exp() get and set the function
used for Chinese Remainder Theorem (CRT) computations involving the
p, q,
dmp1, dmq1,
and iqmp fields of an
RSA object. It is used by the default RSA
implementation during
RSA_private_encrypt(3)
and
RSA_private_decrypt(3)
when the required components of the private key are available or when the
RSA_FLAG_EXT_PKEY
flag is set.
RSA_meth_get_bn_mod_exp() and
RSA_meth_set_bn_mod_exp() get and set the
function used for CRT computations, specifically the value r =
a ^ p mod
m. It is used by the default RSA
implementation during
RSA_public_encrypt(3)
and
RSA_public_decrypt(3)
and as a fallback during
RSA_private_encrypt(3)
and
RSA_private_decrypt(3).
RSA_meth_get_keygen() and
RSA_meth_set_keygen() get and set the optional
function used for generating a new RSA key pair. Unless
keygen is
NULL
, it will be called from
RSA_generate_key_ex(3)
and takes the same parameters. Otherwise, a builtin default implementation is
used.
RETURN VALUES
RSA_meth_new() and RSA_meth_dup() return the newly allocated RSA_METHOD object orNULL
on failure.
RSA_meth_get0_name() returns an internal pointer
which must not be freed by the caller.
RSA_meth_get_flags() returns zero or more
RSA_FLAG_*
constants OR'ed together, or 0
if no flags are set in meth.
RSA_meth_get0_app_data() returns the pointer that
was earlier passed to RSA_meth_set0_app_data() or
NULL
otherwise.
All other RSA_meth_get_*() functions return the
appropriate function pointer that has been set with the corresponding
RSA_meth_set_*() function, or
NULL
if no such pointer has been set in
meth.
All RSA_meth_set*() functions return 1 on success
or 0 on failure. In the current implementation, only
RSA_meth_set1_name() can actually fail.
SEE ALSO
RSA_generate_key_ex(3), RSA_new(3), RSA_private_encrypt(3), RSA_public_encrypt(3), RSA_set_flags(3), RSA_set_method(3), RSA_sign(3)HISTORY
These functions first appeared in OpenSSL 1.1.0. RSA_meth_new(), RSA_meth_dup(), RSA_meth_free(), RSA_meth_set_finish(), RSA_meth_set_priv_enc(), and RSA_meth_set_priv_dec() have been available since OpenBSD 6.3, RSA_meth_set1_name() and RSA_meth_get_finish() since OpenBSD 6.4, and RSA_meth_get0_name(), RSA_meth_get_flags(), RSA_meth_set_flags(), RSA_meth_get0_app_data(), RSA_meth_set0_app_data(), RSA_meth_get_init(), RSA_meth_set_init(), RSA_meth_set_finish(), RSA_meth_get_pub_enc(), RSA_meth_set_pub_enc(), RSA_meth_get_pub_dec(), RSA_meth_set_pub_dec(), RSA_meth_get_priv_enc(), RSA_meth_get_priv_dec(), RSA_meth_get_sign(), RSA_meth_set_sign(), RSA_meth_get_verify(), RSA_meth_set_verify(), RSA_meth_get_mod_exp(), RSA_meth_set_mod_exp(), RSA_meth_get_bn_mod_exp(), RSA_meth_set_bn_mod_exp(), RSA_meth_get_keygen(), and RSA_meth_set_keygen() since OpenBSD 6.6.July 13, 2019 | Debian |