]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/RAND_DRBG_generate.3
MFC: r340703
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / RAND_DRBG_generate.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 "RAND_DRBG_GENERATE 3"
132 .TH RAND_DRBG_GENERATE 3 "2018-11-20" "1.1.1a" "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 RAND_DRBG_generate, RAND_DRBG_bytes \&\- generate random bytes using the given drbg instance
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/rand_drbg.h>
143 \&
144 \& int RAND_DRBG_generate(RAND_DRBG *drbg,
145 \&                        unsigned char *out, size_t outlen,
146 \&                        int prediction_resistance,
147 \&                        const unsigned char *adin, size_t adinlen);
148 \&
149 \& int RAND_DRBG_bytes(RAND_DRBG *drbg,
150 \&                     unsigned char *out, size_t outlen);
151 .Ve
152 .SH "DESCRIPTION"
153 .IX Header "DESCRIPTION"
154 \&\fIRAND_DRBG_generate()\fR generates \fBoutlen\fR random bytes using the given
155 \&\s-1DRBG\s0 instance \fBdrbg\fR and stores them in the buffer at \fBout\fR.
156 .PP
157 Before generating the output, the \s-1DRBG\s0 instance checks whether the maximum
158 number of generate requests (\fIreseed interval\fR) or the maximum timespan
159 (\fIreseed time interval\fR) since its last seeding have been reached.
160 If this is the case, the \s-1DRBG\s0 reseeds automatically.
161 Additionally, an immediate reseeding can be requested by setting the
162 \&\fBprediction_resistance\fR flag to 1. See \s-1NOTES\s0 section for more details.
163 .PP
164 The caller can optionally provide additional data to be used for reseeding
165 by passing a pointer \fBadin\fR to a buffer of length \fBadinlen\fR.
166 This additional data is mixed into the internal state of the random
167 generator but does not contribute to the entropy count.
168 The additional data can be omitted by setting \fBadin\fR to \s-1NULL\s0 and
169 \&\fBadinlen\fR to 0;
170 .PP
171 \&\fIRAND_DRBG_bytes()\fR generates \fBoutlen\fR random bytes using the given
172 \&\s-1DRBG\s0 instance \fBdrbg\fR and stores them in the buffer at \fBout\fR.
173 This function is a wrapper around the \fIRAND_DRBG_generate()\fR call,
174 which collects some additional data from low entropy sources
175 (e.g., a high resolution timer) and calls
176 RAND_DRBG_generate(drbg, out, outlen, 0, adin, adinlen).
177 .SH "RETURN VALUES"
178 .IX Header "RETURN VALUES"
179 \&\fIRAND_DRBG_generate()\fR and \fIRAND_DRBG_bytes()\fR return 1 on success,
180 and 0 on failure.
181 .SH "NOTES"
182 .IX Header "NOTES"
183 The \fIreseed interval\fR and \fIreseed time interval\fR of the \fBdrbg\fR are set to
184 reasonable default values, which in general do not have to be adjusted.
185 If necessary, they can be changed using \fIRAND_DRBG_set_reseed_interval\fR\|(3)
186 and \fIRAND_DRBG_set_reseed_time_interval\fR\|(3), respectively.
187 .PP
188 A request for prediction resistance can only be satisfied by pulling fresh
189 entropy from one of the approved entropy sources listed in section 5.5.2 of
190 [\s-1NIST SP 800\-90C\s0].
191 Since the default \s-1DRBG\s0 implementation does not have access to such an approved
192 entropy source, a request for prediction resistance will always fail.
193 In other words, prediction resistance is currently not supported yet by the \s-1DRBG.\s0
194 .SH "HISTORY"
195 .IX Header "HISTORY"
196 The \s-1RAND_DRBG\s0 functions were added in OpenSSL 1.1.1.
197 .SH "SEE ALSO"
198 .IX Header "SEE ALSO"
199 \&\fIRAND_bytes\fR\|(3),
200 \&\fIRAND_DRBG_set_reseed_interval\fR\|(3),
201 \&\fIRAND_DRBG_set_reseed_time_interval\fR\|(3),
202 \&\s-1\fIRAND_DRBG\s0\fR\|(7)
203 .SH "COPYRIGHT"
204 .IX Header "COPYRIGHT"
205 Copyright 2017\-2018 The OpenSSL Project Authors. All Rights Reserved.
206 .PP
207 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
208 this file except in compliance with the License.  You can obtain a copy
209 in the file \s-1LICENSE\s0 in the source distribution or at
210 <https://www.openssl.org/source/license.html>.