dsa(3) — Subroutines
NAME
dsa − Digital Signature Algorithm
SYNOPSIS
#include <openssl/dsa.h>
#include <openssl/engine.h> DSA ∗ DSA_new(
void ); void DSA_free(
DSA ∗dsa ); int DSA_size(
DSA ∗dsa ); DSA ∗ DSA_generate_parameters(
int bits,
unsigned char ∗seed,
int seed_len,
int ∗counter_ret,
unsigned long ∗h_ret,
void (∗callback)(int, int, void∗),
void ∗cb_arg ); DH ∗ DSA_dup_DH(
DSA ∗r ); int DSA_generate_key(
DSA ∗dsa ); int DSA_sign(
int dummy,
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 dummy,
const unsigned char ∗dgst,
int len,
unsigned char ∗sigbuf,
int siglen,
DSA ∗dsa ); 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 ); int DSA_get_ex_new_index(
long argl,
char ∗argp,
int (∗new_func)(),
int (∗dup_func)(),
void (∗free_func)() ); int DSA_set_ex_data(
DSA ∗d,
int idx,
char ∗arg ); char ∗DSA_get_ex_data(
DSA ∗d,
int idx ); DSA_SIG ∗DSA_SIG_new(
void ); voidDSA_SIG_free(
DSA_SIG ∗a ); int i2d_DSA_SIG(
DSA_SIG ∗a,
unsigned char ∗∗pp ); DSA_SIG ∗d2i_DSA_SIG(
DSA_SIG ∗∗v,
unsigned char ∗∗pp,
long length ); DSA_SIG ∗DSA_do_sign(
const unsigned char ∗dgst,
int dlen,
DSA ∗dsa ); int DSA_do_verify(
const unsigned char ∗dgst,
int dgst_len,
DSA_SIG ∗sig,
DSA ∗dsa ); DSA ∗ d2i_DSAPublicKey(
DSA ∗∗a,
unsigned char ∗∗pp,
long length ); DSA ∗d2i_DSAPrivateKey(
DSA ∗∗a,
unsigned char ∗∗pp,
long length ); DSA ∗ d2i_DSAparams(
DSA ∗∗a,
unsigned char ∗∗pp,
long length ); int i2d_DSAPublicKey(
DSA ∗a,
unsigned char ∗∗pp ); int i2d_DSAPrivateKey(
DSA ∗a,
unsigned char ∗∗pp ); int i2d_DSAparams(
DSA ∗a,
unsigned char ∗∗pp ); int DSAparams_print(
BIO ∗bp,
DSA ∗x ); int DSAparams_print_fp(
FILE ∗fp,
DSA ∗x ); int DSA_print(
BIO ∗bp,
DSA ∗x,
int off ); int DSA_print_fp(
FILE ∗bp,
DSA ∗x,
int off );
DESCRIPTION
These functions implement the Digital Signature Algorithm (DSA). The generation of shared DSA parameters is described in DSA_generate_parameters(3); DSA_generate_key(3) describes how to generate a signature key. Signature generation and verification are described in DSA_sign(3).
The DSA structure consists of several BIGNUM components.
struct
{
BIGNUM ∗p;// prime number (public)
BIGNUM ∗q;// 160-bit subprime, q | p-1 (public)
BIGNUM ∗g;// generator of subgroup (public)
BIGNUM ∗priv_key;// private key x
BIGNUM ∗pub_key;// public key y = g^x
// ...
}
DSA;
In public keys, priv_key is NULL.
DSA conforms to US Federal Information Processing Standard FIPS 186 (Digital Signature Standard, DSS), ANSI X9.30
SEE ALSO
Functions: bn(3), dh(3), err(3), rand_ssl(3), rsa(3), sha(3), DSA_new(3), DSA_size(3), DSA_generate_parameters(3), DSA_dup_DH(3), DSA_generate_key(3), DSA_sign(3), DSA_set_method(3), DSA_get_ex_new_index(3), RSA_print(3)