DH_set_default_openssl_method,
DH_get_default_openssl_method, DH_set_method,
DH_new_method, DH_OpenSSL - select DH method
SYNOPSIS
#include <openssl/dh.h>
#include <openssl/engine.h>
void DH_set_default_openssl_method(DH_METHOD *meth);
DH_METHOD *DH_get_default_openssl_method(void);
int DH_set_method(DH *dh, ENGINE *engine);
DH *DH_new_method(ENGINE *engine);
DH_METHOD *DH_OpenSSL(void);
DESCRIPTION
A DH_METHOD specifies the functions that OpenSSL uses for
Diffie-Hellman operations. By modifying the method,
alternative implementations such as hardware accelerators
may be used.
Initially, the default is to use the OpenSSL internal
implementation. DH_OpenSSL() returns a pointer to that
method.
DH_set_default_openssl_method() makes meth the default
method for all DH structures created later. NB: This is
true only whilst the default engine for Diffie-Hellman
operations remains as "openssl". ENGINEs provide an
encapsulation for implementations of one or more
algorithms, and all the DH functions mentioned here
operate within the scope of the default "openssl" engine.
DH_get_default_openssl_method() returns a pointer to the
current default method for the "openssl" engine.
DH_set_method() selects engine as the engine that will be
responsible for all operations using the structure dh. If
this function completes successfully, then the dh
structure will have its own functional reference of
engine, so the caller should remember to free their own
reference to engine when they are finished with it. NB: An
ENGINE's DH_METHOD can be retrieved (or set) by
ENGINE_get_DH() or ENGINE_set_DH().
DH_new_method() allocates and initializes a DH structure
so that engine will be used for the DH operations. If
engine is NULL, the default engine for Diffie-Hellman
opertaions is used.
typedef struct dh_meth_st
{
/* name of the implementation */
const char *name;
/* generate private and public DH values for key agreement */
int (*generate_key)(DH *dh);
/* compute shared secret */
int (*compute_key)(unsigned char *key, BIGNUM *pub_key, DH *dh);
/* compute r = a ^ p mod m (May be NULL for some implementations) */
int (*bn_mod_exp)(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx,
BN_MONT_CTX *m_ctx);
/* called at DH_new */
int (*init)(DH *dh);
/* called at DH_free */
int (*finish)(DH *dh);
int flags;
char *app_data; /* ?? */
} DH_METHOD;
RETURN VALUES
DH_OpenSSL() and DH_get_default_method() return pointers
to the respective DH_METHODs.
DH_set_default_openssl_method() returns no value.
DH_set_method() returns non-zero if the ENGINE associated
with dh was successfully changed to engine.
DH_new_method() returns NULL and sets an error code that
can be obtained by ERR_get_error(3) if the allocation
fails. Otherwise it returns a pointer to the newly
allocated structure.
SEE ALSO
dh(3), DH_new(3)
HISTORY
DH_set_default_method(), DH_get_default_method(),
DH_set_method(), DH_new_method() and DH_OpenSSL() were
added in OpenSSL 0.9.4.
DH_set_default_openssl_method() and
DH_get_default_openssl_method() replaced
respectively, and DH_set_method() and DH_new_method() were
altered to use ENGINEs rather than DH_METHODs during
development of OpenSSL 0.9.6.
Man(1) output converted with
man2html