DSA_set_default_openssl_method,
DSA_get_default_openssl_method, DSA_set_method,
DSA_new_method, DSA_OpenSSL - select DSA method
SYNOPSIS
#include <openssl/dsa.h>
#include <openssl/engine.h>
void DSA_set_default_openssl_method(DSA_METHOD *meth);
DSA_METHOD *DSA_get_default_openssl_method(void);
int DSA_set_method(DSA *dsa, ENGINE *engine);
DSA *DSA_new_method(ENGINE *engine);
DSA_METHOD *DSA_OpenSSL(void);
DESCRIPTION
A DSA_METHOD specifies the functions that OpenSSL uses for
DSA operations. By modifying the method, alternative
implementations such as hardware accelerators may be used.
Initially, the default is to use the OpenSSL internal
implementation. DSA_OpenSSL() returns a pointer to that
method.
DSA_set_default_openssl_method() makes meth the default
method for all DSA structures created later. NB: This is
true only whilst the default engine for DSA operations
remains as "openssl". ENGINEs provide an encapsulation for
implementations of one or more algorithms at a time, and
all the DSA functions mentioned here operate within the
scope of the default "openssl" engine.
DSA_get_default_openssl_method() returns a pointer to the
current default method for the "openssl" engine.
DSA_set_method() selects engine for all operations using
the structure dsa.
DSA_new_method() allocates and initializes a DSA structure
so that engine will be used for the DSA operations. If
engine is NULL, the default engine for DSA operations is
used.
THE DSA_METHOD STRUCTURE
struct
{
/* name of the implementation */
const char *name;
DSA_SIG *(*dsa_do_sign)(const unsigned char *dgst, int dlen,
DSA *dsa);
/* pre-compute k^-1 and r */
int (*dsa_sign_setup)(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
BIGNUM **rp);
/* verify */
int (*dsa_do_verify)(const unsigned char *dgst, int dgst_len,
DSA_SIG *sig, DSA *dsa);
/* compute rr = a1^p1 * a2^p2 mod m (May be NULL for some
implementations) */
int (*dsa_mod_exp)(DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1,
BIGNUM *a2, BIGNUM *p2, BIGNUM *m,
BN_CTX *ctx, BN_MONT_CTX *in_mont);
/* compute r = a ^ p mod m (May be NULL for some implementations) */
int (*bn_mod_exp)(DSA *dsa, BIGNUM *r, BIGNUM *a,
const BIGNUM *p, const BIGNUM *m,
BN_CTX *ctx, BN_MONT_CTX *m_ctx);
/* called at DSA_new */
int (*init)(DSA *DSA);
/* called at DSA_free */
int (*finish)(DSA *DSA);
int flags;
char *app_data; /* ?? */
} DSA_METHOD;
RETURN VALUES
DSA_OpenSSL() and DSA_get_default_openssl_method() return
pointers to the respective DSA_METHODs.
DSA_set_default_openssl_method() returns no value.
DSA_set_method() returns non-zero if the ENGINE associated
with dsa was successfully changed to engine.
DSA_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
dsa(3), DSA_new(3)
DSA_set_default_method(), DSA_get_default_method(),
DSA_set_method(), DSA_new_method() and DSA_OpenSSL() were
added in OpenSSL 0.9.4.
DSA_set_default_openssl_method() and
DSA_get_default_openssl_method() replaced
DSA_set_default_method() and DSA_get_default_method()
respectively, and DSA_set_method() and DSA_new_method()
were altered to use ENGINEs rather than DSA_METHODs during
development of OpenSSL 0.9.6.
Man(1) output converted with
man2html