]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/RAND_add.pod
rand_drbg: remove RAND_DRBG.
[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.
7d615e21 61For more details, see L<EVP_RAND(7)>.
3a50a8a9 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
9c0586d5 70descriptors. Conversely, a nonzero argument enables the retention of
c7504aeb 71file descriptors. This function is usually called during initialization
dc4e74ef
P
72and it takes effect immediately. This capability only applies to the default
73provider.
c7504aeb 74
a73d990e
DMSP
75RAND_event() and RAND_screen() are equivalent to RAND_poll() and exist
76for compatibility reasons only. See HISTORY section below.
1931a04c 77
60b52453
UM
78=head1 RETURN VALUES
79
a73d990e 80RAND_status() returns 1 if the random generator has been seeded
513393f8 81with enough data, 0 otherwise.
4ec2d4d2 82
8389ec4b 83RAND_poll() returns 1 if it generated seed data, 0 otherwise.
73241290 84
8389ec4b 85RAND_event() returns RAND_status().
73241290 86
4ec2d4d2 87The other functions do not return values.
60b52453
UM
88
89=head1 SEE ALSO
90
a73d990e
DMSP
91L<RAND_bytes(3)>,
92L<RAND_egd(3)>,
93L<RAND_load_file(3)>,
94L<RAND(7)>
7d615e21 95L<EVP_RAND(7)>
60b52453 96
b5c4bbbe
JL
97=head1 HISTORY
98
99RAND_event() and RAND_screen() were deprecated in OpenSSL 1.1.0 and should
100not be used.
101
e2f92610
RS
102=head1 COPYRIGHT
103
fbd2ece1 104Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 105
4746f25a 106Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
107this file except in compliance with the License. You can obtain a copy
108in the file LICENSE in the source distribution or at
109L<https://www.openssl.org/source/license.html>.
110
111=cut