#include
int DSA_sign(int type, const unsigned char *dgst, int len, unsigned char *sigret, unsigned int *siglen, DSA *dsa);
int DSA_sign_setup(DSA *dsa, BN_CTX *ctx, BIGNUM **kinvp, BIGNUM **rp);
int DSA_verify(int type, const unsigned char *dgst, int len, unsigned char *sigbuf, int siglen, DSA *dsa);
_D_S_A___s_i_g_n___s_e_t_u_p_(_) may be used to precompute part of the signing operation in case signature generation is time-critical. It expects ddssaa to contain DSA parameters. It places the precomputed values in newly allocated BBIIGGNNUUMMs at *kkiinnvvpp and *rrpp, after freeing the old ones unless *kkiinnvvpp and *rrpp are NULL. These values may be passed to _D_S_A___s_i_g_n_(_) in ddssaa-->>kkiinnvv and ddssaa-->>rr. ccttxx is a pre-allocated BBNN__CCTTXX or NULL.
_D_S_A___v_e_r_i_f_y_(_) verifies that the signature ssiiggbbuuff of size ssiigglleenn matches a given message digest ddggsstt of size lleenn. ddssaa is the signer's public key.
The ttyyppee parameter is ignored.
The PRNG must be seeded before _D_S_A___s_i_g_n_(_) (or _D_S_A___s_i_g_n___s_e_t_u_p_(_)) is called.