66e17241eaba7c7e51655d17f92e43826f12c069
[dragonfly.git] / secure / lib / libcrypto / man / DSA_generate_parameters.3
1 .\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is turned on, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .nr rF 0
58 .if \n(.g .if rF .nr rF 1
59 .if (\n(rF:(\n(.g==0)) \{
60 .    if \nF \{
61 .        de IX
62 .        tm Index:\\$1\t\\n%\t"\\$2"
63 ..
64 .        if !\nF==2 \{
65 .            nr % 0
66 .            nr F 2
67 .        \}
68 .    \}
69 .\}
70 .rr rF
71 .\"
72 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
73 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
74 .    \" fudge factors for nroff and troff
75 .if n \{\
76 .    ds #H 0
77 .    ds #V .8m
78 .    ds #F .3m
79 .    ds #[ \f1
80 .    ds #] \fP
81 .\}
82 .if t \{\
83 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
84 .    ds #V .6m
85 .    ds #F 0
86 .    ds #[ \&
87 .    ds #] \&
88 .\}
89 .    \" simple accents for nroff and troff
90 .if n \{\
91 .    ds ' \&
92 .    ds ` \&
93 .    ds ^ \&
94 .    ds , \&
95 .    ds ~ ~
96 .    ds /
97 .\}
98 .if t \{\
99 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
100 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
101 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
102 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
103 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
104 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
105 .\}
106 .    \" troff and (daisy-wheel) nroff accents
107 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
108 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
109 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
110 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
111 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
112 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
113 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
114 .ds ae a\h'-(\w'a'u*4/10)'e
115 .ds Ae A\h'-(\w'A'u*4/10)'E
116 .    \" corrections for vroff
117 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
118 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
119 .    \" for low resolution devices (crt and lpr)
120 .if \n(.H>23 .if \n(.V>19 \
121 \{\
122 .    ds : e
123 .    ds 8 ss
124 .    ds o a
125 .    ds d- d\h'-1'\(ga
126 .    ds D- D\h'-1'\(hy
127 .    ds th \o'bp'
128 .    ds Th \o'LP'
129 .    ds ae ae
130 .    ds Ae AE
131 .\}
132 .rm #[ #] #H #V #F C
133 .\" ========================================================================
134 .\"
135 .IX Title "DSA_generate_parameters 3"
136 .TH DSA_generate_parameters 3 "2015-07-09" "1.0.1p" "OpenSSL"
137 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
138 .\" way too many mistakes in technical documents.
139 .if n .ad l
140 .nh
141 .SH "NAME"
142 DSA_generate_parameters \- generate DSA parameters
143 .SH "SYNOPSIS"
144 .IX Header "SYNOPSIS"
145 .Vb 1
146 \& #include <openssl/dsa.h>
147 \&
148 \& DSA *DSA_generate_parameters(int bits, unsigned char *seed,
149 \&                int seed_len, int *counter_ret, unsigned long *h_ret,
150 \&                void (*callback)(int, int, void *), void *cb_arg);
151 .Ve
152 .SH "DESCRIPTION"
153 .IX Header "DESCRIPTION"
154 \&\fIDSA_generate_parameters()\fR generates primes p and q and a generator g
155 for use in the \s-1DSA.\s0
156 .PP
157 \&\fBbits\fR is the length of the prime to be generated; the \s-1DSS\s0 allows a
158 maximum of 1024 bits.
159 .PP
160 If \fBseed\fR is \fB\s-1NULL\s0\fR or \fBseed_len\fR < 20, the primes will be
161 generated at random. Otherwise, the seed is used to generate
162 them. If the given seed does not yield a prime q, a new random
163 seed is chosen and placed at \fBseed\fR.
164 .PP
165 \&\fIDSA_generate_parameters()\fR places the iteration count in
166 *\fBcounter_ret\fR and a counter used for finding a generator in
167 *\fBh_ret\fR, unless these are \fB\s-1NULL\s0\fR.
168 .PP
169 A callback function may be used to provide feedback about the progress
170 of the key generation. If \fBcallback\fR is not \fB\s-1NULL\s0\fR, it will be
171 called as follows:
172 .IP "\(bu" 4
173 When a candidate for q is generated, \fBcallback(0, m++, cb_arg)\fR is called
174 (m is 0 for the first candidate).
175 .IP "\(bu" 4
176 When a candidate for q has passed a test by trial division,
177 \&\fBcallback(1, \-1, cb_arg)\fR is called.
178 While a candidate for q is tested by Miller-Rabin primality tests,
179 \&\fBcallback(1, i, cb_arg)\fR is called in the outer loop
180 (once for each witness that confirms that the candidate may be prime);
181 i is the loop counter (starting at 0).
182 .IP "\(bu" 4
183 When a prime q has been found, \fBcallback(2, 0, cb_arg)\fR and
184 \&\fBcallback(3, 0, cb_arg)\fR are called.
185 .IP "\(bu" 4
186 Before a candidate for p (other than the first) is generated and tested,
187 \&\fBcallback(0, counter, cb_arg)\fR is called.
188 .IP "\(bu" 4
189 When a candidate for p has passed the test by trial division,
190 \&\fBcallback(1, \-1, cb_arg)\fR is called.
191 While it is tested by the Miller-Rabin primality test,
192 \&\fBcallback(1, i, cb_arg)\fR is called in the outer loop
193 (once for each witness that confirms that the candidate may be prime).
194 i is the loop counter (starting at 0).
195 .IP "\(bu" 4
196 When p has been found, \fBcallback(2, 1, cb_arg)\fR is called.
197 .IP "\(bu" 4
198 When the generator has been found, \fBcallback(3, 1, cb_arg)\fR is called.
199 .SH "RETURN VALUE"
200 .IX Header "RETURN VALUE"
201 \&\fIDSA_generate_parameters()\fR returns a pointer to the \s-1DSA\s0 structure, or
202 \&\fB\s-1NULL\s0\fR if the parameter generation fails. The error codes can be
203 obtained by \fIERR_get_error\fR\|(3).
204 .SH "BUGS"
205 .IX Header "BUGS"
206 Seed lengths > 20 are not supported.
207 .SH "SEE ALSO"
208 .IX Header "SEE ALSO"
209 \&\fIdsa\fR\|(3), \fIERR_get_error\fR\|(3), \fIrand\fR\|(3),
210 \&\fIDSA_free\fR\|(3)
211 .SH "HISTORY"
212 .IX Header "HISTORY"
213 \&\fIDSA_generate_parameters()\fR appeared in SSLeay 0.8. The \fBcb_arg\fR
214 argument was added in SSLeay 0.9.0.
215 In versions up to OpenSSL 0.9.4, \fBcallback(1, ...)\fR was called
216 in the inner loop of the Miller-Rabin test whenever it reached the
217 squaring step (the parameters to \fBcallback\fR did not reveal how many
218 witnesses had been tested); since OpenSSL 0.9.5, \fBcallback(1, ...)\fR
219 is called as in \fIBN_is_prime\fR\|(3), i.e. once for each witness.