]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/BN_rand.3
Regen manual pages.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / BN_rand.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 "BN_RAND 3"
132 .TH BN_RAND 3 "2018-09-11" "1.1.1" "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 BN_rand, BN_priv_rand, BN_pseudo_rand, BN_rand_range, BN_priv_rand_range, BN_pseudo_rand_range \&\- generate pseudo\-random number
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/bn.h>
143 \&
144 \& int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
145 \&
146 \& int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom);
147 \&
148 \& int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
149 \&
150 \& int BN_rand_range(BIGNUM *rnd, BIGNUM *range);
151 \&
152 \& int BN_priv_rand_range(BIGNUM *rnd, BIGNUM *range);
153 \&
154 \& int BN_pseudo_rand_range(BIGNUM *rnd, BIGNUM *range);
155 .Ve
156 .SH "DESCRIPTION"
157 .IX Header "DESCRIPTION"
158 \&\fIBN_rand()\fR generates a cryptographically strong pseudo-random number of
159 \&\fBbits\fR in length and stores it in \fBrnd\fR.
160 If \fBbits\fR is less than zero, or too small to
161 accommodate the requirements specified by the \fBtop\fR and \fBbottom\fR
162 parameters, an error is returned.
163 The \fBtop\fR parameters specifies
164 requirements on the most significant bit of the generated number.
165 If it is \fB\s-1BN_RAND_TOP_ANY\s0\fR, there is no constraint.
166 If it is \fB\s-1BN_RAND_TOP_ONE\s0\fR, the top bit must be one.
167 If it is \fB\s-1BN_RAND_TOP_TWO\s0\fR, the two most significant bits of
168 the number will be set to 1, so that the product of two such random
169 numbers will always have 2*\fBbits\fR length.
170 If \fBbottom\fR is \fB\s-1BN_RAND_BOTTOM_ODD\s0\fR, the number will be odd; if it
171 is \fB\s-1BN_RAND_BOTTOM_ANY\s0\fR it can be odd or even.
172 If \fBbits\fR is 1 then \fBtop\fR cannot also be \fB\s-1BN_RAND_FLG_TOPTWO\s0\fR.
173 .PP
174 \&\fIBN_rand_range()\fR generates a cryptographically strong pseudo-random
175 number \fBrnd\fR in the range 0 <= \fBrnd\fR < \fBrange\fR.
176 .PP
177 \&\fIBN_priv_rand()\fR and \fIBN_priv_rand_range()\fR have the same semantics as
178 \&\fIBN_rand()\fR and \fIBN_rand_range()\fR respectively.  They are intended to be
179 used for generating values that should remain private, and mirror the
180 same difference between \fIRAND_bytes\fR\|(3) and \fIRAND_priv_bytes\fR\|(3).
181 .SH "NOTES"
182 .IX Header "NOTES"
183 Always check the error return value of these functions and do not take
184 randomness for granted: an error occurs if the \s-1CSPRNG\s0 has not been
185 seeded with enough randomness to ensure an unpredictable byte sequence.
186 .SH "RETURN VALUES"
187 .IX Header "RETURN VALUES"
188 The functions return 1 on success, 0 on error.
189 The error codes can be obtained by \fIERR_get_error\fR\|(3).
190 .SH "HISTORY"
191 .IX Header "HISTORY"
192 .IP "\(bu" 2
193 Starting with OpenSSL release 1.1.0, \fIBN_pseudo_rand()\fR has been identical
194 to \fIBN_rand()\fR and \fIBN_pseudo_rand_range()\fR has been identical to
195 \&\fIBN_rand_range()\fR.
196 The \*(L"pseudo\*(R" functions should not be used and may be deprecated in
197 a future release.
198 .IP "\(bu" 2
199 \&\fIBN_priv_rand()\fR and \fIBN_priv_rand_range()\fR were added in OpenSSL 1.1.1.
200 .SH "SEE ALSO"
201 .IX Header "SEE ALSO"
202 \&\fIERR_get_error\fR\|(3),
203 \&\fIRAND_add\fR\|(3),
204 \&\fIRAND_bytes\fR\|(3),
205 \&\fIRAND_priv_bytes\fR\|(3),
206 \&\s-1\fIRAND\s0\fR\|(7),
207 \&\s-1\fIRAND_DRBG\s0\fR\|(7)
208 .SH "COPYRIGHT"
209 .IX Header "COPYRIGHT"
210 Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved.
211 .PP
212 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
213 this file except in compliance with the License.  You can obtain a copy
214 in the file \s-1LICENSE\s0 in the source distribution or at
215 <https://www.openssl.org/source/license.html>.