f4401cd869
alter des.h to be friendly with openssl/des.h (you can include both in the same file) make libkrb to depend on libdes. bump major. massage various portioin of heimdal to be friendly with openssl 0.9.7b.
228 lines
7.2 KiB
Groff
228 lines
7.2 KiB
Groff
.\" $NetBSD: DSA_generate_parameters.3,v 1.12 2003/07/24 14:16:38 itojun Exp $
|
|
.\"
|
|
.\" Automatically generated by Pod::Man version 1.02
|
|
.\" Thu Jul 24 13:07:54 2003
|
|
.\"
|
|
.\" Standard preamble:
|
|
.\" ======================================================================
|
|
.de Sh \" Subsection heading
|
|
.br
|
|
.if t .Sp
|
|
.ne 5
|
|
.PP
|
|
\fB\\$1\fR
|
|
.PP
|
|
..
|
|
.de Sp \" Vertical space (when we can't use .PP)
|
|
.if t .sp .5v
|
|
.if n .sp
|
|
..
|
|
.de Ip \" List item
|
|
.br
|
|
.ie \\n(.$>=3 .ne \\$3
|
|
.el .ne 3
|
|
.IP "\\$1" \\$2
|
|
..
|
|
.de Vb \" Begin verbatim text
|
|
.ft CW
|
|
.nf
|
|
.ne \\$1
|
|
..
|
|
.de Ve \" End verbatim text
|
|
.ft R
|
|
|
|
.fi
|
|
..
|
|
.\" Set up some character translations and predefined strings. \*(-- will
|
|
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
|
.\" double quote, and \*(R" will give a right double quote. | will give a
|
|
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used
|
|
.\" to do unbreakable dashes and therefore won't be available. \*(C` and
|
|
.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
|
|
.tr \(*W-|\(bv\*(Tr
|
|
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
|
.ie n \{\
|
|
. ds -- \(*W-
|
|
. ds PI pi
|
|
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
|
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
|
. ds L" ""
|
|
. ds R" ""
|
|
. ds C` `
|
|
. ds C' '
|
|
'br\}
|
|
.el\{\
|
|
. ds -- \|\(em\|
|
|
. ds PI \(*p
|
|
. ds L" ``
|
|
. ds R" ''
|
|
'br\}
|
|
.\"
|
|
.\" If the F register is turned on, we'll generate index entries on stderr
|
|
.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
|
|
.\" index entries marked with X<> in POD. Of course, you'll have to process
|
|
.\" the output yourself in some meaningful fashion.
|
|
.if \nF \{\
|
|
. de IX
|
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
|
. .
|
|
. nr % 0
|
|
. rr F
|
|
.\}
|
|
.\"
|
|
.\" For nroff, turn off justification. Always turn off hyphenation; it
|
|
.\" makes way too many mistakes in technical documents.
|
|
.hy 0
|
|
.if n .na
|
|
.\"
|
|
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
|
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
|
.bd B 3
|
|
. \" fudge factors for nroff and troff
|
|
.if n \{\
|
|
. ds #H 0
|
|
. ds #V .8m
|
|
. ds #F .3m
|
|
. ds #[ \f1
|
|
. ds #] \fP
|
|
.\}
|
|
.if t \{\
|
|
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
|
. ds #V .6m
|
|
. ds #F 0
|
|
. ds #[ \&
|
|
. ds #] \&
|
|
.\}
|
|
. \" simple accents for nroff and troff
|
|
.if n \{\
|
|
. ds ' \&
|
|
. ds ` \&
|
|
. ds ^ \&
|
|
. ds , \&
|
|
. ds ~ ~
|
|
. ds /
|
|
.\}
|
|
.if t \{\
|
|
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
|
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
|
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
|
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
|
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
|
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
|
.\}
|
|
. \" troff and (daisy-wheel) nroff accents
|
|
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
|
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
|
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
|
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
|
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
|
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
|
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
|
.ds ae a\h'-(\w'a'u*4/10)'e
|
|
.ds Ae A\h'-(\w'A'u*4/10)'E
|
|
. \" corrections for vroff
|
|
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
|
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
|
. \" for low resolution devices (crt and lpr)
|
|
.if \n(.H>23 .if \n(.V>19 \
|
|
\{\
|
|
. ds : e
|
|
. ds 8 ss
|
|
. ds o a
|
|
. ds d- d\h'-1'\(ga
|
|
. ds D- D\h'-1'\(hy
|
|
. ds th \o'bp'
|
|
. ds Th \o'LP'
|
|
. ds ae ae
|
|
. ds Ae AE
|
|
.\}
|
|
.rm #[ #] #H #V #F C
|
|
.\" ======================================================================
|
|
.\"
|
|
.IX Title "DSA_generate_parameters 3"
|
|
.TH DSA_generate_parameters 3 "0.9.7b" "2002-09-25" "OpenSSL"
|
|
.UC
|
|
.SH "NAME"
|
|
DSA_generate_parameters \- generate \s-1DSA\s0 parameters
|
|
.SH "LIBRARY"
|
|
libcrypto, -lcrypto
|
|
.SH "SYNOPSIS"
|
|
.IX Header "SYNOPSIS"
|
|
.Vb 1
|
|
\& #include <openssl/dsa.h>
|
|
.Ve
|
|
.Vb 3
|
|
\& DSA *DSA_generate_parameters(int bits, unsigned char *seed,
|
|
\& int seed_len, int *counter_ret, unsigned long *h_ret,
|
|
\& void (*callback)(int, int, void *), void *cb_arg);
|
|
.Ve
|
|
.SH "DESCRIPTION"
|
|
.IX Header "DESCRIPTION"
|
|
\&\fIDSA_generate_parameters()\fR generates primes p and q and a generator g
|
|
for use in the \s-1DSA\s0.
|
|
.PP
|
|
\&\fBbits\fR is the length of the prime to be generated; the \s-1DSS\s0 allows a
|
|
maximum of 1024 bits.
|
|
.PP
|
|
If \fBseed\fR is \fB\s-1NULL\s0\fR or \fBseed_len\fR < 20, the primes will be
|
|
generated at random. Otherwise, the seed is used to generate
|
|
them. If the given seed does not yield a prime q, a new random
|
|
seed is chosen and placed at \fBseed\fR.
|
|
.PP
|
|
\&\fIDSA_generate_parameters()\fR places the iteration count in
|
|
*\fBcounter_ret\fR and a counter used for finding a generator in
|
|
*\fBh_ret\fR, unless these are \fB\s-1NULL\s0\fR.
|
|
.PP
|
|
A callback function may be used to provide feedback about the progress
|
|
of the key generation. If \fBcallback\fR is not \fB\s-1NULL\s0\fR, it will be
|
|
called as follows:
|
|
.Ip "\(bu" 4
|
|
When a candidate for q is generated, \fBcallback(0, m++, cb_arg)\fR is called
|
|
(m is 0 for the first candidate).
|
|
.Ip "\(bu" 4
|
|
When a candidate for q has passed a test by trial division,
|
|
\&\fBcallback(1, \-1, cb_arg)\fR is called.
|
|
While a candidate for q is tested by Miller-Rabin primality tests,
|
|
\&\fBcallback(1, i, cb_arg)\fR is called in the outer loop
|
|
(once for each witness that confirms that the candidate may be prime);
|
|
i is the loop counter (starting at 0).
|
|
.Ip "\(bu" 4
|
|
When a prime q has been found, \fBcallback(2, 0, cb_arg)\fR and
|
|
\&\fBcallback(3, 0, cb_arg)\fR are called.
|
|
.Ip "\(bu" 4
|
|
Before a candidate for p (other than the first) is generated and tested,
|
|
\&\fBcallback(0, counter, cb_arg)\fR is called.
|
|
.Ip "\(bu" 4
|
|
When a candidate for p has passed the test by trial division,
|
|
\&\fBcallback(1, \-1, cb_arg)\fR is called.
|
|
While it is tested by the Miller-Rabin primality test,
|
|
\&\fBcallback(1, i, cb_arg)\fR is called in the outer loop
|
|
(once for each witness that confirms that the candidate may be prime).
|
|
i is the loop counter (starting at 0).
|
|
.Ip "\(bu" 4
|
|
When p has been found, \fBcallback(2, 1, cb_arg)\fR is called.
|
|
.Ip "\(bu" 4
|
|
When the generator has been found, \fBcallback(3, 1, cb_arg)\fR is called.
|
|
.SH "RETURN VALUE"
|
|
.IX Header "RETURN VALUE"
|
|
\&\fIDSA_generate_parameters()\fR returns a pointer to the \s-1DSA\s0 structure, or
|
|
\&\fB\s-1NULL\s0\fR if the parameter generation fails. The error codes can be
|
|
obtained by ERR_get_error(3).
|
|
.SH "BUGS"
|
|
.IX Header "BUGS"
|
|
Seed lengths > 20 are not supported.
|
|
.SH "SEE ALSO"
|
|
.IX Header "SEE ALSO"
|
|
openssl_dsa(3), ERR_get_error(3), openssl_rand(3),
|
|
DSA_free(3)
|
|
.SH "HISTORY"
|
|
.IX Header "HISTORY"
|
|
\&\fIDSA_generate_parameters()\fR appeared in SSLeay 0.8. The \fBcb_arg\fR
|
|
argument was added in SSLeay 0.9.0.
|
|
In versions up to OpenSSL 0.9.4, \fBcallback(1, ...)\fR was called
|
|
in the inner loop of the Miller-Rabin test whenever it reached the
|
|
squaring step (the parameters to \fBcallback\fR did not reveal how many
|
|
witnesses had been tested); since OpenSSL 0.9.5, \fBcallback(1, ...)\fR
|
|
is called as in \fIBN_is_prime\fR\|(3), i.e. once for each witness.
|
|
=cut
|