Update files for OpenSSL-1.0.2h import.
[dragonfly.git] / secure / lib / libcrypto / man / DSA_generate_parameters.3
1 .\" Automatically generated by Pod::Man 2.28 (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 "2016-05-03" "1.0.2h" "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_ex, DSA_generate_parameters \- generate DSA parameters
143 .SH "SYNOPSIS"
144 .IX Header "SYNOPSIS"
145 .Vb 1
146 \& #include <openssl/dsa.h>
147 \&
148 \& int DSA_generate_parameters_ex(DSA *dsa, int bits,
149 \&                const unsigned char *seed,int seed_len,
150 \&                int *counter_ret, unsigned long *h_ret, BN_GENCB *cb);
151 .Ve
152 .PP
153 Deprecated:
154 .PP
155 .Vb 3
156 \& DSA *DSA_generate_parameters(int bits, unsigned char *seed,
157 \&                int seed_len, int *counter_ret, unsigned long *h_ret,
158 \&                void (*callback)(int, int, void *), void *cb_arg);
159 .Ve
160 .SH "DESCRIPTION"
161 .IX Header "DESCRIPTION"
162 \&\fIDSA_generate_parameters_ex()\fR generates primes p and q and a generator g
163 for use in the \s-1DSA\s0 and stores the result in \fBdsa\fR.
164 .PP
165 \&\fBbits\fR is the length of the prime to be generated; the \s-1DSS\s0 allows a
166 maximum of 1024 bits.
167 .PP
168 If \fBseed\fR is \fB\s-1NULL\s0\fR or \fBseed_len\fR < 20, the primes will be
169 generated at random. Otherwise, the seed is used to generate
170 them. If the given seed does not yield a prime q, a new random
171 seed is chosen.
172 .PP
173 \&\fIDSA_generate_parameters_ex()\fR places the iteration count in
174 *\fBcounter_ret\fR and a counter used for finding a generator in
175 *\fBh_ret\fR, unless these are \fB\s-1NULL\s0\fR.
176 .PP
177 A callback function may be used to provide feedback about the progress
178 of the key generation. If \fBcb\fR is not \fB\s-1NULL\s0\fR, it will be
179 called as shown below. For information on the \s-1BN_GENCB\s0 structure and the
180 BN_GENCB_call function discussed below, refer to
181 \&\fIBN_generate_prime\fR\|(3).
182 .IP "\(bu" 4
183 When a candidate for q is generated, \fBBN_GENCB_call(cb, 0, m++)\fR is called
184 (m is 0 for the first candidate).
185 .IP "\(bu" 4
186 When a candidate for q has passed a test by trial division,
187 \&\fBBN_GENCB_call(cb, 1, \-1)\fR is called.
188 While a candidate for q is tested by Miller-Rabin primality tests,
189 \&\fBBN_GENCB_call(cb, 1, i)\fR is called in the outer loop
190 (once for each witness that confirms that the candidate may be prime);
191 i is the loop counter (starting at 0).
192 .IP "\(bu" 4
193 When a prime q has been found, \fBBN_GENCB_call(cb, 2, 0)\fR and
194 \&\fBBN_GENCB_call(cb, 3, 0)\fR are called.
195 .IP "\(bu" 4
196 Before a candidate for p (other than the first) is generated and tested,
197 \&\fBBN_GENCB_call(cb, 0, counter)\fR is called.
198 .IP "\(bu" 4
199 When a candidate for p has passed the test by trial division,
200 \&\fBBN_GENCB_call(cb, 1, \-1)\fR is called.
201 While it is tested by the Miller-Rabin primality test,
202 \&\fBBN_GENCB_call(cb, 1, i)\fR is called in the outer loop
203 (once for each witness that confirms that the candidate may be prime).
204 i is the loop counter (starting at 0).
205 .IP "\(bu" 4
206 When p has been found, \fBBN_GENCB_call(cb, 2, 1)\fR is called.
207 .IP "\(bu" 4
208 When the generator has been found, \fBBN_GENCB_call(cb, 3, 1)\fR is called.
209 .PP
210 \&\fIDSA_generate_parameters()\fR (deprecated) works in much the same way as for DSA_generate_parameters_ex, except that no \fBdsa\fR parameter is passed and
211 instead a newly allocated \fB\s-1DSA\s0\fR structure is returned. Additionally \*(L"old
212 style\*(R" callbacks are used instead of the newer \s-1BN_GENCB\s0 based approach.
213 Refer to \fIBN_generate_prime\fR\|(3) for further information.
214 .SH "RETURN VALUE"
215 .IX Header "RETURN VALUE"
216 \&\fIDSA_generate_parameters_ex()\fR returns a 1 on success, or 0 otherwise.
217 .PP
218 \&\fIDSA_generate_parameters()\fR returns a pointer to the \s-1DSA\s0 structure, or
219 \&\fB\s-1NULL\s0\fR if the parameter generation fails.
220 .PP
221 The error codes can be obtained by \fIERR_get_error\fR\|(3).
222 .SH "BUGS"
223 .IX Header "BUGS"
224 Seed lengths > 20 are not supported.
225 .SH "SEE ALSO"
226 .IX Header "SEE ALSO"
227 \&\fIdsa\fR\|(3), \fIERR_get_error\fR\|(3), \fIrand\fR\|(3),
228 \&\fIDSA_free\fR\|(3), \fIBN_generate_prime\fR\|(3)
229 .SH "HISTORY"
230 .IX Header "HISTORY"
231 \&\fIDSA_generate_parameters()\fR appeared in SSLeay 0.8. The \fBcb_arg\fR
232 argument was added in SSLeay 0.9.0.
233 In versions up to OpenSSL 0.9.4, \fBcallback(1, ...)\fR was called
234 in the inner loop of the Miller-Rabin test whenever it reached the
235 squaring step (the parameters to \fBcallback\fR did not reveal how many
236 witnesses had been tested); since OpenSSL 0.9.5, \fBcallback(1, ...)\fR
237 is called as in \fIBN_is_prime\fR\|(3), i.e. once for each witness.