Commit manual pages after running 'man-update' and add new manual pages.
[dragonfly.git] / secure / lib / libcrypto / man / RAND_set_rand_method.3
1 .rn '' }`
2 ''' $RCSfile$$Revision$$Date$
3 '''
4 ''' $Log$
5 '''
6 .de Sh
7 .br
8 .if t .Sp
9 .ne 5
10 .PP
11 \fB\\$1\fR
12 .PP
13 ..
14 .de Sp
15 .if t .sp .5v
16 .if n .sp
17 ..
18 .de Ip
19 .br
20 .ie \\n(.$>=3 .ne \\$3
21 .el .ne 3
22 .IP "\\$1" \\$2
23 ..
24 .de Vb
25 .ft CW
26 .nf
27 .ne \\$1
28 ..
29 .de Ve
30 .ft R
31
32 .fi
33 ..
34 '''
35 '''
36 '''     Set up \*(-- to give an unbreakable dash;
37 '''     string Tr holds user defined translation string.
38 '''     Bell System Logo is used as a dummy character.
39 '''
40 .tr \(*W-|\(bv\*(Tr
41 .ie n \{\
42 .ds -- \(*W-
43 .ds PI pi
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
46 .ds L" ""
47 .ds R" ""
48 '''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 '''   \*(L" and \*(R", except that they are used on ".xx" lines,
50 '''   such as .IP and .SH, which do another additional levels of
51 '''   double-quote interpretation
52 .ds M" """
53 .ds S" """
54 .ds N" """""
55 .ds T" """""
56 .ds L' '
57 .ds R' '
58 .ds M' '
59 .ds S' '
60 .ds N' '
61 .ds T' '
62 'br\}
63 .el\{\
64 .ds -- \(em\|
65 .tr \*(Tr
66 .ds L" ``
67 .ds R" ''
68 .ds M" ``
69 .ds S" ''
70 .ds N" ``
71 .ds T" ''
72 .ds L' `
73 .ds R' '
74 .ds M' `
75 .ds S' '
76 .ds N' `
77 .ds T' '
78 .ds PI \(*p
79 'br\}
80 .\"     If the F register is turned on, we'll generate
81 .\"     index entries out stderr for the following things:
82 .\"             TH      Title 
83 .\"             SH      Header
84 .\"             Sh      Subsection 
85 .\"             Ip      Item
86 .\"             X<>     Xref  (embedded
87 .\"     Of course, you have to process the output yourself
88 .\"     in some meaninful fashion.
89 .if \nF \{
90 .de IX
91 .tm Index:\\$1\t\\n%\t"\\$2"
92 ..
93 .nr % 0
94 .rr F
95 .\}
96 .TH RAND_set_rand_method 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
97 .UC
98 .if n .hy 0
99 .if n .na
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ          \" put $1 in typewriter font
102 .ft CW
103 'if n "\c
104 'if t \\&\\$1\c
105 'if n \\&\\$1\c
106 'if n \&"
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
108 '.ft R
109 ..
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 .       \" AM - accent mark definitions
112 .bd B 3
113 .       \" fudge factors for nroff and troff
114 .if n \{\
115 .       ds #H 0
116 .       ds #V .8m
117 .       ds #F .3m
118 .       ds #[ \f1
119 .       ds #] \fP
120 .\}
121 .if t \{\
122 .       ds #H ((1u-(\\\\n(.fu%2u))*.13m)
123 .       ds #V .6m
124 .       ds #F 0
125 .       ds #[ \&
126 .       ds #] \&
127 .\}
128 .       \" simple accents for nroff and troff
129 .if n \{\
130 .       ds ' \&
131 .       ds ` \&
132 .       ds ^ \&
133 .       ds , \&
134 .       ds ~ ~
135 .       ds ? ?
136 .       ds ! !
137 .       ds /
138 .       ds q
139 .\}
140 .if t \{\
141 .       ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 .       ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 .       ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 .       ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 .       ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 .       ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 .       ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 .       ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 .       ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
150 .\}
151 .       \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 .       \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 .       \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
172 \{\
173 .       ds : e
174 .       ds 8 ss
175 .       ds v \h'-1'\o'\(aa\(ga'
176 .       ds _ \h'-1'^
177 .       ds . \h'-1'.
178 .       ds 3 3
179 .       ds o a
180 .       ds d- d\h'-1'\(ga
181 .       ds D- D\h'-1'\(hy
182 .       ds th \o'bp'
183 .       ds Th \o'LP'
184 .       ds ae ae
185 .       ds Ae AE
186 .       ds oe oe
187 .       ds Oe OE
188 .\}
189 .rm #[ #] #H #V #F C
190 .SH "NAME"
191 RAND_set_rand_method, RAND_get_rand_method, RAND_SSLeay \- select RAND method
192 .SH "SYNOPSIS"
193 .PP
194 .Vb 1
195 \& #include <openssl/rand.h>
196 .Ve
197 .Vb 1
198 \& void RAND_set_rand_method(const RAND_METHOD *meth);
199 .Ve
200 .Vb 1
201 \& const RAND_METHOD *RAND_get_rand_method(void);
202 .Ve
203 .Vb 1
204 \& RAND_METHOD *RAND_SSLeay(void);
205 .Ve
206 .SH "DESCRIPTION"
207 A \fBRAND_METHOD\fR specifies the functions that OpenSSL uses for random number
208 generation. By modifying the method, alternative implementations such as
209 hardware RNGs may be used. IMPORTANT: See the NOTES section for important
210 information about how these RAND API functions are affected by the use of
211 \fBENGINE\fR API calls.
212 .PP
213 Initially, the default RAND_METHOD is the OpenSSL internal implementation, as
214 returned by \fIRAND_SSLeay()\fR.
215 .PP
216 \fIRAND_set_default_method()\fR makes \fBmeth\fR the method for PRNG use. \fBNB\fR: This is
217 true only whilst no ENGINE has been set as a default for RAND, so this function
218 is no longer recommended.
219 .PP
220 \fIRAND_get_default_method()\fR returns a pointer to the current RAND_METHOD.
221 However, the meaningfulness of this result is dependant on whether the ENGINE
222 API is being used, so this function is no longer recommended.
223 .SH "THE RAND_METHOD STRUCTURE"
224 .PP
225 .Vb 9
226 \& typedef struct rand_meth_st
227 \& {
228 \&        void (*seed)(const void *buf, int num);
229 \&        int (*bytes)(unsigned char *buf, int num);
230 \&        void (*cleanup)(void);
231 \&        void (*add)(const void *buf, int num, int entropy);
232 \&        int (*pseudorand)(unsigned char *buf, int num);
233 \&        int (*status)(void);
234 \& } RAND_METHOD;
235 .Ve
236 The components point to the implementation of \fIRAND_seed()\fR,
237 \fIRAND_bytes()\fR, \fIRAND_cleanup()\fR, \fIRAND_add()\fR, \fIRAND_pseudo_rand()\fR
238 and \fIRAND_status()\fR.
239 Each component may be NULL if the function is not implemented.
240 .SH "RETURN VALUES"
241 \fIRAND_set_rand_method()\fR returns no value. \fIRAND_get_rand_method()\fR and
242 \fIRAND_SSLeay()\fR return pointers to the respective methods.
243 .SH "NOTES"
244 As of version 0.9.7, RAND_METHOD implementations are grouped together with other
245 algorithmic APIs (eg. RSA_METHOD, EVP_CIPHER, etc) in \fBENGINE\fR modules. If a
246 default ENGINE is specified for RAND functionality using an ENGINE API function,
247 that will override any RAND defaults set using the RAND API (ie.
248 \fIRAND_set_rand_method()\fR). For this reason, the ENGINE API is the recommended way
249 to control default implementations for use in RAND and other cryptographic
250 algorithms.
251 .SH "SEE ALSO"
252 rand(3), engine(3)
253 .SH "HISTORY"
254 \fIRAND_set_rand_method()\fR, \fIRAND_get_rand_method()\fR and \fIRAND_SSLeay()\fR are
255 available in all versions of OpenSSL.
256 .PP
257 In the engine version of version 0.9.6, \fIRAND_set_rand_method()\fR was altered to
258 take an ENGINE pointer as its argument. As of version 0.9.7, that has been
259 reverted as the ENGINE API transparently overrides RAND defaults if used,
260 otherwise RAND API functions work as before. \fIRAND_set_rand_engine()\fR was also
261 introduced in version 0.9.7.
262
263 .rn }` ''
264 .IX Title "RAND_set_rand_method 3"
265 .IX Name "RAND_set_rand_method, RAND_get_rand_method, RAND_SSLeay - select RAND method"
266
267 .IX Header "NAME"
268
269 .IX Header "SYNOPSIS"
270
271 .IX Header "DESCRIPTION"
272
273 .IX Header "THE RAND_METHOD STRUCTURE"
274
275 .IX Header "RETURN VALUES"
276
277 .IX Header "NOTES"
278
279 .IX Header "SEE ALSO"
280
281 .IX Header "HISTORY"
282