]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/RAND_add.pod
Implement EVP_MAC_do_all_ex()
[thirdparty/openssl.git] / doc / man3 / RAND_add.pod
CommitLineData
60b52453
UM
1=pod
2
3=head1 NAME
4
c7504aeb
P
5RAND_add, RAND_poll, RAND_seed, RAND_status, RAND_event, RAND_screen,
6RAND_keep_random_devices_open
8389ec4b 7- add randomness to the PRNG or get its status
60b52453
UM
8
9=head1 SYNOPSIS
10
11 #include <openssl/rand.h>
12
8389ec4b 13 int RAND_status(void);
75e2c877 14 int RAND_poll();
60b52453 15
f367ac2b 16 void RAND_add(const void *buf, int num, double randomness);
8389ec4b 17 void RAND_seed(const void *buf, int num);
60b52453 18
c7504aeb
P
19 void RAND_keep_random_devices_open(int keep);
20
be80b21d
RL
21Deprecated since OpenSSL 1.1.0, can be hidden entirely by defining
22B<OPENSSL_API_COMPAT> with a suitable version value, see
23L<openssl_user_macros(7)>:
4ec2d4d2 24
8389ec4b 25 int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam);
73241290
JY
26 void RAND_screen(void);
27
60b52453
UM
28=head1 DESCRIPTION
29
a73d990e
DMSP
30These functions can be used to seed the random generator and to check its
31seeded state.
32In general, manual (re-)seeding of the default OpenSSL random generator
33(L<RAND_OpenSSL(3)>) is not necessary (but allowed), since it does (re-)seed
34itself automatically using trusted system entropy sources.
35This holds unless the default RAND_METHOD has been replaced or OpenSSL was
36built with automatic reseeding disabled, see L<RAND(7)> for more details.
37
38RAND_status() indicates whether or not the random generator has been sufficiently
39seeded. If not, functions such as L<RAND_bytes(3)> will fail.
40
41RAND_poll() uses the system's capabilities to seed the random generator using
c16de9d8 42random input obtained from polling various trusted entropy sources.
a73d990e
DMSP
43The default choice of the entropy source can be modified at build time,
44see L<RAND(7)> for more details.
8389ec4b 45
a73d990e
DMSP
46RAND_add() mixes the B<num> bytes at B<buf> into the internal state
47of the random generator.
48This function will not normally be needed, as mentioned above.
8389ec4b
RS
49The B<randomness> argument is an estimate of how much randomness is
50contained in
f367ac2b
RS
51B<buf>, in bytes, and should be a number between zero and B<num>.
52Details about sources of randomness and how to estimate their randomness
a73d990e
DMSP
53can be found in the literature; for example [NIST SP 800-90B].
54The content of B<buf> cannot be recovered from subsequent random generator output.
55Applications that intend to save and restore random state in an external file
56should consider using L<RAND_load_file(3)> instead.
60b52453 57
3a50a8a9
DMSP
58NOTE: In FIPS mode, random data provided by the application is not considered to
59be a trusted entropy source. It is mixed into the internal state of the RNG as
60additional data only and this does not count as a full reseed.
61For more details, see L<RAND_DRBG(7)>.
62
f367ac2b 63RAND_seed() is equivalent to RAND_add() with B<randomness> set to B<num>.
60b52453 64
c7504aeb
P
65RAND_keep_random_devices_open() is used to control file descriptor
66usage by the random seed sources. Some seed sources maintain open file
67descriptors by default, which allows such sources to operate in a
68chroot(2) jail without the associated device nodes being available. When
69the B<keep> argument is zero, this call disables the retention of file
70descriptors. Conversely, a non-zero argument enables the retention of
71file descriptors. This function is usually called during initialization
72and it takes effect immediately.
73
a73d990e
DMSP
74RAND_event() and RAND_screen() are equivalent to RAND_poll() and exist
75for compatibility reasons only. See HISTORY section below.
1931a04c 76
60b52453
UM
77=head1 RETURN VALUES
78
a73d990e 79RAND_status() returns 1 if the random generator has been seeded
513393f8 80with enough data, 0 otherwise.
4ec2d4d2 81
8389ec4b 82RAND_poll() returns 1 if it generated seed data, 0 otherwise.
73241290 83
8389ec4b 84RAND_event() returns RAND_status().
73241290 85
4ec2d4d2 86The other functions do not return values.
60b52453
UM
87
88=head1 SEE ALSO
89
a73d990e
DMSP
90L<RAND_bytes(3)>,
91L<RAND_egd(3)>,
92L<RAND_load_file(3)>,
93L<RAND(7)>
3a50a8a9 94L<RAND_DRBG(7)>
60b52453 95
b5c4bbbe
JL
96=head1 HISTORY
97
98RAND_event() and RAND_screen() were deprecated in OpenSSL 1.1.0 and should
99not be used.
100
e2f92610
RS
101=head1 COPYRIGHT
102
b5c4bbbe 103Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 104
4746f25a 105Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
106this file except in compliance with the License. You can obtain a copy
107in the file LICENSE in the source distribution or at
108L<https://www.openssl.org/source/license.html>.
109
110=cut