1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
.\" $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
|