1 .\" $NetBSD: libcrypto.pl,v 1.3 2007/11/27 22:16:03 christos Exp $
3 .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
6 .\" ========================================================================
7 .de Sh \" Subsection heading
15 .de Sp \" Vertical space (when we can't use .PP)
19 .de Vb \" Begin verbatim text
24 .de Ve \" End verbatim text
28 .\" Set up some character translations and predefined strings. \*(-- will
29 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
30 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
31 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
32 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
33 .\" nothing in troff, for use with C<>.
35 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
39 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
40 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
53 .\" Escape single quotes in literal strings from groff's Unicode transform.
57 .\" If the F register is turned on, we'll generate index entries on stderr for
58 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
59 .\" entries marked with X<> in POD. Of course, you'll have to process the
60 .\" output yourself in some meaningful fashion.
63 . tm Index:\\$1\t\\n%\t"\\$2"
73 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
74 .\" Fear. Run. Save yourself. No user-serviceable parts.
75 . \" fudge factors for nroff and troff
84 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
90 . \" simple accents for nroff and troff
100 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
101 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
102 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
103 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
104 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
105 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
107 . \" troff and (daisy-wheel) nroff accents
108 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
109 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
110 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
111 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
112 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
113 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
114 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
115 .ds ae a\h'-(\w'a'u*4/10)'e
116 .ds Ae A\h'-(\w'A'u*4/10)'E
117 . \" corrections for vroff
118 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
119 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
120 . \" for low resolution devices (crt and lpr)
121 .if \n(.H>23 .if \n(.V>19 \
134 .\" ========================================================================
136 .IX Title "DSA_generate_parameters 3"
137 .TH DSA_generate_parameters 3 "2002-09-25" "1.1.0-dev" "OpenSSL"
138 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
139 .\" way too many mistakes in technical documents.
143 DSA_generate_parameters \- generate DSA parameters
147 .IX Header "SYNOPSIS"
149 \& #include <openssl/dsa.h>
151 \& DSA *DSA_generate_parameters(int bits, unsigned char *seed,
152 \& int seed_len, int *counter_ret, unsigned long *h_ret,
153 \& void (*callback)(int, int, void *), void *cb_arg);
156 .IX Header "DESCRIPTION"
157 \&\fIDSA_generate_parameters()\fR generates primes p and q and a generator g
158 for use in the \s-1DSA\s0.
160 \&\fBbits\fR is the length of the prime to be generated; the \s-1DSS\s0 allows a
161 maximum of 1024 bits.
163 If \fBseed\fR is \fB\s-1NULL\s0\fR or \fBseed_len\fR < 20, the primes will be
164 generated at random. Otherwise, the seed is used to generate
165 them. If the given seed does not yield a prime q, a new random
166 seed is chosen and placed at \fBseed\fR.
168 \&\fIDSA_generate_parameters()\fR places the iteration count in
169 *\fBcounter_ret\fR and a counter used for finding a generator in
170 *\fBh_ret\fR, unless these are \fB\s-1NULL\s0\fR.
172 A callback function may be used to provide feedback about the progress
173 of the key generation. If \fBcallback\fR is not \fB\s-1NULL\s0\fR, it will be
176 When a candidate for q is generated, \fBcallback(0, m++, cb_arg)\fR is called
177 (m is 0 for the first candidate).
179 When a candidate for q has passed a test by trial division,
180 \&\fBcallback(1, \-1, cb_arg)\fR is called.
181 While a candidate for q is tested by Miller-Rabin primality tests,
182 \&\fBcallback(1, i, cb_arg)\fR is called in the outer loop
183 (once for each witness that confirms that the candidate may be prime);
184 i is the loop counter (starting at 0).
186 When a prime q has been found, \fBcallback(2, 0, cb_arg)\fR and
187 \&\fBcallback(3, 0, cb_arg)\fR are called.
189 Before a candidate for p (other than the first) is generated and tested,
190 \&\fBcallback(0, counter, cb_arg)\fR is called.
192 When a candidate for p has passed the test by trial division,
193 \&\fBcallback(1, \-1, cb_arg)\fR is called.
194 While it is tested by the Miller-Rabin primality test,
195 \&\fBcallback(1, i, cb_arg)\fR is called in the outer loop
196 (once for each witness that confirms that the candidate may be prime).
197 i is the loop counter (starting at 0).
199 When p has been found, \fBcallback(2, 1, cb_arg)\fR is called.
201 When the generator has been found, \fBcallback(3, 1, cb_arg)\fR is called.
203 .IX Header "RETURN VALUE"
204 \&\fIDSA_generate_parameters()\fR returns a pointer to the \s-1DSA\s0 structure, or
205 \&\fB\s-1NULL\s0\fR if the parameter generation fails. The error codes can be
206 obtained by \fIERR_get_error\fR\|(3).
209 Seed lengths > 20 are not supported.
211 .IX Header "SEE ALSO"
212 \&\fIopenssl_dsa\fR\|(3), \fIERR_get_error\fR\|(3), \fIopenssl_rand\fR\|(3),
213 \&\fIDSA_free\fR\|(3)
216 \&\fIDSA_generate_parameters()\fR appeared in SSLeay 0.8. The \fBcb_arg\fR
217 argument was added in SSLeay 0.9.0.
218 In versions up to OpenSSL 0.9.4, \fBcallback(1, ...)\fR was called
219 in the inner loop of the Miller-Rabin test whenever it reached the
220 squaring step (the parameters to \fBcallback\fR did not reveal how many
221 witnesses had been tested); since OpenSSL 0.9.5, \fBcallback(1, ...)\fR
222 is called as in \fIBN_is_prime\fR\|(3), i.e. once for each witness.