Upgrade to OpenSSL 0.9.8h.
[dragonfly.git] / secure / lib / libcrypto / man / RAND_add.3
CommitLineData
aac4ff6f 1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
8b0cefbb
JR
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
984263bc
MD
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
8b0cefbb 13.de Sp \" Vertical space (when we can't use .PP)
984263bc
MD
14.if t .sp .5v
15.if n .sp
16..
8b0cefbb 17.de Vb \" Begin verbatim text
984263bc
MD
18.ft CW
19.nf
20.ne \\$1
21..
8b0cefbb 22.de Ve \" End verbatim text
984263bc 23.ft R
984263bc
MD
24.fi
25..
8b0cefbb
JR
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
aac4ff6f
PA
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
8b0cefbb 33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
984263bc 34.ie n \{\
8b0cefbb
JR
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
984263bc
MD
43'br\}
44.el\{\
8b0cefbb
JR
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
984263bc 49'br\}
8b0cefbb
JR
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
984263bc 58..
8b0cefbb
JR
59. nr % 0
60. rr F
984263bc 61.\}
8b0cefbb 62.\"
aac4ff6f
PA
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
8b0cefbb
JR
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
984263bc 71.if n \{\
8b0cefbb
JR
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
984263bc
MD
77.\}
78.if t \{\
8b0cefbb
JR
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
984263bc 84.\}
8b0cefbb 85. \" simple accents for nroff and troff
984263bc 86.if n \{\
8b0cefbb
JR
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
984263bc
MD
93.\}
94.if t \{\
8b0cefbb
JR
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'
984263bc 101.\}
8b0cefbb 102. \" troff and (daisy-wheel) nroff accents
984263bc
MD
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
8b0cefbb 112. \" corrections for vroff
984263bc
MD
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'
8b0cefbb 115. \" for low resolution devices (crt and lpr)
984263bc
MD
116.if \n(.H>23 .if \n(.V>19 \
117\{\
8b0cefbb
JR
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
984263bc
MD
127.\}
128.rm #[ #] #H #V #F C
8b0cefbb
JR
129.\" ========================================================================
130.\"
131.IX Title "RAND_add 3"
aac4ff6f 132.TH RAND_add 3 "2008-09-06" "0.9.8h" "OpenSSL"
984263bc
MD
133.SH "NAME"
134RAND_add, RAND_seed, RAND_status, RAND_event, RAND_screen \- add
74dab6c2 135entropy to the PRNG
984263bc 136.SH "SYNOPSIS"
8b0cefbb 137.IX Header "SYNOPSIS"
984263bc
MD
138.Vb 1
139\& #include <openssl/rand.h>
aac4ff6f
PA
140.Ve
141.PP
142.Vb 1
984263bc 143\& void RAND_seed(const void *buf, int num);
aac4ff6f
PA
144.Ve
145.PP
146.Vb 1
984263bc 147\& void RAND_add(const void *buf, int num, double entropy);
aac4ff6f
PA
148.Ve
149.PP
150.Vb 1
984263bc 151\& int RAND_status(void);
aac4ff6f
PA
152.Ve
153.PP
154.Vb 2
984263bc
MD
155\& int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam);
156\& void RAND_screen(void);
157.Ve
158.SH "DESCRIPTION"
8b0cefbb
JR
159.IX Header "DESCRIPTION"
160\&\fIRAND_add()\fR mixes the \fBnum\fR bytes at \fBbuf\fR into the \s-1PRNG\s0 state. Thus,
984263bc 161if the data at \fBbuf\fR are unpredictable to an adversary, this
8b0cefbb 162increases the uncertainty about the state and makes the \s-1PRNG\s0 output
984263bc
MD
163less predictable. Suitable input comes from user interaction (random
164key presses, mouse movements) and certain hardware events. The
8b0cefbb 165\&\fBentropy\fR argument is (the lower bound of) an estimate of how much
984263bc
MD
166randomness is contained in \fBbuf\fR, measured in bytes. Details about
167sources of randomness and how to estimate their entropy can be found
8b0cefbb 168in the literature, e.g. \s-1RFC\s0 1750.
984263bc 169.PP
8b0cefbb
JR
170\&\fIRAND_add()\fR may be called with sensitive data such as user entered
171passwords. The seed values cannot be recovered from the \s-1PRNG\s0 output.
984263bc 172.PP
8b0cefbb
JR
173OpenSSL makes sure that the \s-1PRNG\s0 state is unique for each thread. On
174systems that provide \f(CW\*(C`/dev/urandom\*(C'\fR, the randomness device is used
175to seed the \s-1PRNG\s0 transparently. However, on all other systems, the
176application is responsible for seeding the \s-1PRNG\s0 by calling \fIRAND_add()\fR,
177\&\fIRAND_egd\fR\|(3)
178or \fIRAND_load_file\fR\|(3).
984263bc 179.PP
8b0cefbb 180\&\fIRAND_seed()\fR is equivalent to \fIRAND_add()\fR when \fBnum == entropy\fR.
984263bc 181.PP
8b0cefbb 182\&\fIRAND_event()\fR collects the entropy from Windows events such as mouse
984263bc 183movements and other user interaction. It should be called with the
8b0cefbb 184\&\fBiMsg\fR, \fBwParam\fR and \fBlParam\fR arguments of \fIall\fR messages sent to
984263bc 185the window procedure. It will estimate the entropy contained in the
8b0cefbb 186event message (if any), and add it to the \s-1PRNG\s0. The program can then
984263bc
MD
187process the messages as usual.
188.PP
189The \fIRAND_screen()\fR function is available for the convenience of Windows
8b0cefbb
JR
190programmers. It adds the current contents of the screen to the \s-1PRNG\s0.
191For applications that can catch Windows events, seeding the \s-1PRNG\s0 by
984263bc
MD
192calling \fIRAND_event()\fR is a significantly better source of
193randomness. It should be noted that both methods cannot be used on
194servers that run without user interaction.
195.SH "RETURN VALUES"
8b0cefbb
JR
196.IX Header "RETURN VALUES"
197\&\fIRAND_status()\fR and \fIRAND_event()\fR return 1 if the \s-1PRNG\s0 has been seeded
984263bc
MD
198with enough data, 0 otherwise.
199.PP
200The other functions do not return values.
201.SH "SEE ALSO"
8b0cefbb
JR
202.IX Header "SEE ALSO"
203\&\fIrand\fR\|(3), \fIRAND_egd\fR\|(3),
204\&\fIRAND_load_file\fR\|(3), \fIRAND_cleanup\fR\|(3)
984263bc 205.SH "HISTORY"
8b0cefbb
JR
206.IX Header "HISTORY"
207\&\fIRAND_seed()\fR and \fIRAND_screen()\fR are available in all versions of SSLeay
984263bc
MD
208and OpenSSL. \fIRAND_add()\fR and \fIRAND_status()\fR have been added in OpenSSL
2090.9.5, \fIRAND_event()\fR in OpenSSL 0.9.5a.