.\" $OpenBSD: dsa.3,v 1.3 2016/11/06 15:52:50 jmc Exp $ .\" .Dd $Mdocdate: November 6 2016 $ .Dt DSA 3 .Os .Sh NAME .Nm dsa .Nd Digital Signature Algorithm .Sh SYNOPSIS .In openssl/dsa.h .Sh DESCRIPTION These functions implement the Digital Signature Algorithm (DSA). The generation of shared DSA parameters is described in .Xr DSA_generate_parameters 3 ; .Xr DSA_generate_key 3 describes how to generate a signature key. Signature generation and verification are described in .Xr DSA_sign 3 . .Pp The .Vt DSA structure consists of several BIGNUM components. .Bd -literal typedef 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; .Ed .Pp In public keys, .Fa priv_key is .Dv NULL . .Pp Note that DSA keys may use non-standard .Vt DSA_METHOD implementations, either directly or by the use of .Vt ENGINE modules. In some cases (e.g. an .Vt ENGINE providing support for hardware-embedded keys), these .Vt BIGNUM values will not be used by the implementation or may be used for alternative data storage. For this reason, applications should generally avoid using .Vt DSA structure elements directly and instead use API functions to query or modify keys. .Sh SEE ALSO .Xr bn 3 , .Xr d2i_DSAPublicKey 3 , .Xr dh 3 , .Xr DSA_do_sign 3 , .Xr DSA_dup_DH 3 , .Xr DSA_generate_key 3 , .Xr DSA_generate_parameters 3 , .Xr DSA_get_ex_new_index 3 , .Xr DSA_new 3 , .Xr DSA_print 3 , .Xr DSA_set_method 3 , .Xr DSA_SIG_new 3 , .Xr DSA_sign 3 , .Xr DSA_size 3 , .Xr engine 3 , .Xr ERR 3 , .Xr rsa 3 .Sh STANDARDS US Federal Information Processing Standard FIPS 186 (Digital Signature Standard, DSS), ANSI X9.30