]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/RAND_DRBG_generate.3
MFC: r344602
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / RAND_DRBG_generate.3
1 .\" Automatically generated by Pod::Man 4.10 (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 .nr rF 0
58 .if \n(.g .if rF .nr rF 1
59 .if (\n(rF:(\n(.g==0)) \{\
60 .    if \nF \{\
61 .        de IX
62 .        tm Index:\\$1\t\\n%\t"\\$2"
63 ..
64 .        if !\nF==2 \{\
65 .            nr % 0
66 .            nr F 2
67 .        \}
68 .    \}
69 .\}
70 .rr rF
71 .\"
72 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
73 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
74 .    \" fudge factors for nroff and troff
75 .if n \{\
76 .    ds #H 0
77 .    ds #V .8m
78 .    ds #F .3m
79 .    ds #[ \f1
80 .    ds #] \fP
81 .\}
82 .if t \{\
83 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
84 .    ds #V .6m
85 .    ds #F 0
86 .    ds #[ \&
87 .    ds #] \&
88 .\}
89 .    \" simple accents for nroff and troff
90 .if n \{\
91 .    ds ' \&
92 .    ds ` \&
93 .    ds ^ \&
94 .    ds , \&
95 .    ds ~ ~
96 .    ds /
97 .\}
98 .if t \{\
99 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
100 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
101 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
102 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
103 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
104 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
105 .\}
106 .    \" troff and (daisy-wheel) nroff accents
107 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
108 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
109 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
110 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
111 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
112 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
113 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
114 .ds ae a\h'-(\w'a'u*4/10)'e
115 .ds Ae A\h'-(\w'A'u*4/10)'E
116 .    \" corrections for vroff
117 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
118 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
119 .    \" for low resolution devices (crt and lpr)
120 .if \n(.H>23 .if \n(.V>19 \
121 \{\
122 .    ds : e
123 .    ds 8 ss
124 .    ds o a
125 .    ds d- d\h'-1'\(ga
126 .    ds D- D\h'-1'\(hy
127 .    ds th \o'bp'
128 .    ds Th \o'LP'
129 .    ds ae ae
130 .    ds Ae AE
131 .\}
132 .rm #[ #] #H #V #F C
133 .\" ========================================================================
134 .\"
135 .IX Title "RAND_DRBG_GENERATE 3"
136 .TH RAND_DRBG_GENERATE 3 "2019-02-26" "1.1.1b" "OpenSSL"
137 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
138 .\" way too many mistakes in technical documents.
139 .if n .ad l
140 .nh
141 .SH "NAME"
142 RAND_DRBG_generate, RAND_DRBG_bytes \&\- generate random bytes using the given drbg instance
143 .SH "SYNOPSIS"
144 .IX Header "SYNOPSIS"
145 .Vb 1
146 \& #include <openssl/rand_drbg.h>
147 \&
148 \& int RAND_DRBG_generate(RAND_DRBG *drbg,
149 \&                        unsigned char *out, size_t outlen,
150 \&                        int prediction_resistance,
151 \&                        const unsigned char *adin, size_t adinlen);
152 \&
153 \& int RAND_DRBG_bytes(RAND_DRBG *drbg,
154 \&                     unsigned char *out, size_t outlen);
155 .Ve
156 .SH "DESCRIPTION"
157 .IX Header "DESCRIPTION"
158 \&\fBRAND_DRBG_generate()\fR generates \fBoutlen\fR random bytes using the given
159 \&\s-1DRBG\s0 instance \fBdrbg\fR and stores them in the buffer at \fBout\fR.
160 .PP
161 Before generating the output, the \s-1DRBG\s0 instance checks whether the maximum
162 number of generate requests (\fIreseed interval\fR) or the maximum timespan
163 (\fIreseed time interval\fR) since its last seeding have been reached.
164 If this is the case, the \s-1DRBG\s0 reseeds automatically.
165 Additionally, an immediate reseeding can be requested by setting the
166 \&\fBprediction_resistance\fR flag to 1. See \s-1NOTES\s0 section for more details.
167 .PP
168 The caller can optionally provide additional data to be used for reseeding
169 by passing a pointer \fBadin\fR to a buffer of length \fBadinlen\fR.
170 This additional data is mixed into the internal state of the random
171 generator but does not contribute to the entropy count.
172 The additional data can be omitted by setting \fBadin\fR to \s-1NULL\s0 and
173 \&\fBadinlen\fR to 0;
174 .PP
175 \&\fBRAND_DRBG_bytes()\fR generates \fBoutlen\fR random bytes using the given
176 \&\s-1DRBG\s0 instance \fBdrbg\fR and stores them in the buffer at \fBout\fR.
177 This function is a wrapper around the \fBRAND_DRBG_generate()\fR call,
178 which collects some additional data from low entropy sources
179 (e.g., a high resolution timer) and calls
180 RAND_DRBG_generate(drbg, out, outlen, 0, adin, adinlen).
181 .SH "RETURN VALUES"
182 .IX Header "RETURN VALUES"
183 \&\fBRAND_DRBG_generate()\fR and \fBRAND_DRBG_bytes()\fR return 1 on success,
184 and 0 on failure.
185 .SH "NOTES"
186 .IX Header "NOTES"
187 The \fIreseed interval\fR and \fIreseed time interval\fR of the \fBdrbg\fR are set to
188 reasonable default values, which in general do not have to be adjusted.
189 If necessary, they can be changed using \fBRAND_DRBG_set_reseed_interval\fR\|(3)
190 and \fBRAND_DRBG_set_reseed_time_interval\fR\|(3), respectively.
191 .PP
192 A request for prediction resistance can only be satisfied by pulling fresh
193 entropy from one of the approved entropy sources listed in section 5.5.2 of
194 [\s-1NIST SP 800\-90C\s0].
195 Since the default \s-1DRBG\s0 implementation does not have access to such an approved
196 entropy source, a request for prediction resistance will always fail.
197 In other words, prediction resistance is currently not supported yet by the \s-1DRBG.\s0
198 .SH "HISTORY"
199 .IX Header "HISTORY"
200 The \s-1RAND_DRBG\s0 functions were added in OpenSSL 1.1.1.
201 .SH "SEE ALSO"
202 .IX Header "SEE ALSO"
203 \&\fBRAND_bytes\fR\|(3),
204 \&\fBRAND_DRBG_set_reseed_interval\fR\|(3),
205 \&\fBRAND_DRBG_set_reseed_time_interval\fR\|(3),
206 \&\s-1\fBRAND_DRBG\s0\fR\|(7)
207 .SH "COPYRIGHT"
208 .IX Header "COPYRIGHT"
209 Copyright 2017\-2018 The OpenSSL Project Authors. All Rights Reserved.
210 .PP
211 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
212 this file except in compliance with the License.  You can obtain a copy
213 in the file \s-1LICENSE\s0 in the source distribution or at
214 <https://www.openssl.org/source/license.html>.