]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/DSA_generate_parameters.3
MFC: r337791
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / DSA_generate_parameters.3
1 .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
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 >0, 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 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "DSA_generate_parameters 3"
132 .TH DSA_generate_parameters 3 "2018-08-14" "1.0.2p" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 DSA_generate_parameters_ex, DSA_generate_parameters \- generate DSA parameters
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/dsa.h>
143 \&
144 \& int DSA_generate_parameters_ex(DSA *dsa, int bits,
145 \&                const unsigned char *seed,int seed_len,
146 \&                int *counter_ret, unsigned long *h_ret, BN_GENCB *cb);
147 .Ve
148 .PP
149 Deprecated:
150 .PP
151 .Vb 3
152 \& DSA *DSA_generate_parameters(int bits, unsigned char *seed,
153 \&                int seed_len, int *counter_ret, unsigned long *h_ret,
154 \&                void (*callback)(int, int, void *), void *cb_arg);
155 .Ve
156 .SH "DESCRIPTION"
157 .IX Header "DESCRIPTION"
158 \&\fIDSA_generate_parameters_ex()\fR generates primes p and q and a generator g
159 for use in the \s-1DSA\s0 and stores the result in \fBdsa\fR.
160 .PP
161 \&\fBbits\fR is the length of the prime to be generated; the \s-1DSS\s0 allows a
162 maximum of 1024 bits.
163 .PP
164 If \fBseed\fR is \fB\s-1NULL\s0\fR or \fBseed_len\fR < 20, the primes will be
165 generated at random. Otherwise, the seed is used to generate
166 them. If the given seed does not yield a prime q, a new random
167 seed is chosen.
168 .PP
169 \&\fIDSA_generate_parameters_ex()\fR places the iteration count in
170 *\fBcounter_ret\fR and a counter used for finding a generator in
171 *\fBh_ret\fR, unless these are \fB\s-1NULL\s0\fR.
172 .PP
173 A callback function may be used to provide feedback about the progress
174 of the key generation. If \fBcb\fR is not \fB\s-1NULL\s0\fR, it will be
175 called as shown below. For information on the \s-1BN_GENCB\s0 structure and the
176 BN_GENCB_call function discussed below, refer to
177 \&\fIBN_generate_prime\fR\|(3).
178 .IP "\(bu" 4
179 When a candidate for q is generated, \fBBN_GENCB_call(cb, 0, m++)\fR is called
180 (m is 0 for the first candidate).
181 .IP "\(bu" 4
182 When a candidate for q has passed a test by trial division,
183 \&\fBBN_GENCB_call(cb, 1, \-1)\fR is called.
184 While a candidate for q is tested by Miller-Rabin primality tests,
185 \&\fBBN_GENCB_call(cb, 1, i)\fR is called in the outer loop
186 (once for each witness that confirms that the candidate may be prime);
187 i is the loop counter (starting at 0).
188 .IP "\(bu" 4
189 When a prime q has been found, \fBBN_GENCB_call(cb, 2, 0)\fR and
190 \&\fBBN_GENCB_call(cb, 3, 0)\fR are called.
191 .IP "\(bu" 4
192 Before a candidate for p (other than the first) is generated and tested,
193 \&\fBBN_GENCB_call(cb, 0, counter)\fR is called.
194 .IP "\(bu" 4
195 When a candidate for p has passed the test by trial division,
196 \&\fBBN_GENCB_call(cb, 1, \-1)\fR is called.
197 While it is tested by the Miller-Rabin primality test,
198 \&\fBBN_GENCB_call(cb, 1, i)\fR is called in the outer loop
199 (once for each witness that confirms that the candidate may be prime).
200 i is the loop counter (starting at 0).
201 .IP "\(bu" 4
202 When p has been found, \fBBN_GENCB_call(cb, 2, 1)\fR is called.
203 .IP "\(bu" 4
204 When the generator has been found, \fBBN_GENCB_call(cb, 3, 1)\fR is called.
205 .PP
206 \&\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
207 instead a newly allocated \fB\s-1DSA\s0\fR structure is returned. Additionally \*(L"old
208 style\*(R" callbacks are used instead of the newer \s-1BN_GENCB\s0 based approach.
209 Refer to \fIBN_generate_prime\fR\|(3) for further information.
210 .SH "RETURN VALUE"
211 .IX Header "RETURN VALUE"
212 \&\fIDSA_generate_parameters_ex()\fR returns a 1 on success, or 0 otherwise.
213 .PP
214 \&\fIDSA_generate_parameters()\fR returns a pointer to the \s-1DSA\s0 structure, or
215 \&\fB\s-1NULL\s0\fR if the parameter generation fails.
216 .PP
217 The error codes can be obtained by \fIERR_get_error\fR\|(3).
218 .SH "BUGS"
219 .IX Header "BUGS"
220 Seed lengths > 20 are not supported.
221 .SH "SEE ALSO"
222 .IX Header "SEE ALSO"
223 \&\fIdsa\fR\|(3), \fIERR_get_error\fR\|(3), \fIrand\fR\|(3),
224 \&\fIDSA_free\fR\|(3), \fIBN_generate_prime\fR\|(3)
225 .SH "HISTORY"
226 .IX Header "HISTORY"
227 \&\fIDSA_generate_parameters()\fR appeared in SSLeay 0.8. The \fBcb_arg\fR
228 argument was added in SSLeay 0.9.0.
229 In versions up to OpenSSL 0.9.4, \fBcallback(1, ...)\fR was called
230 in the inner loop of the Miller-Rabin test whenever it reached the
231 squaring step (the parameters to \fBcallback\fR did not reveal how many
232 witnesses had been tested); since OpenSSL 0.9.5, \fBcallback(1, ...)\fR
233 is called as in \fIBN_is_prime\fR\|(3), i.e. once for each witness.