| =pod |
| |
| =head1 NAME |
| |
| RAND_add, RAND_seed, RAND_status, RAND_event, RAND_screen - add |
| entropy to the PRNG |
| |
| =head1 SYNOPSIS |
| |
| #include <openssl/rand.h> |
| |
| void RAND_seed(const void *buf, int num); |
| |
| void RAND_add(const void *buf, int num, double entropy); |
| |
| int RAND_status(void); |
| |
| #if OPENSSL_API_COMPAT < 0x10100000L |
| int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam); |
| void RAND_screen(void); |
| #endif |
| |
| =head1 DESCRIPTION |
| |
| RAND_add() mixes the B<num> bytes at B<buf> into the PRNG state. Thus, |
| if the data at B<buf> are unpredictable to an adversary, this |
| increases the uncertainty about the state and makes the PRNG output |
| less predictable. Suitable input comes from user interaction (random |
| key presses, mouse movements) and certain hardware events. The |
| B<entropy> argument is (the lower bound of) an estimate of how much |
| randomness is contained in B<buf>, measured in bytes. Details about |
| sources of randomness and how to estimate their entropy can be found |
| in the literature, e.g. RFC 1750. |
| |
| RAND_add() may be called with sensitive data such as user entered |
| passwords. The seed values cannot be recovered from the PRNG output. |
| |
| OpenSSL makes sure that the PRNG state is unique for each thread. On |
| systems that provide C</dev/urandom>, the randomness device is used |
| to seed the PRNG transparently. However, on all other systems, the |
| application is responsible for seeding the PRNG by calling RAND_add(), |
| L<RAND_egd(3)> |
| or L<RAND_load_file(3)>. |
| |
| RAND_seed() is equivalent to RAND_add() when B<num == entropy>. |
| |
| RAND_event() and RAND_screen() are deprecated and should not be called. |
| |
| =head1 RETURN VALUES |
| |
| RAND_status() returns 1 if the PRNG has been seeded |
| with enough data, 0 otherwise. |
| |
| RAND_event() calls RAND_poll() and returns RAND_status(). |
| |
| RAND_screen calls RAND_poll(). |
| |
| The other functions do not return values. |
| |
| =head1 HISTORY |
| |
| RAND_event() and RAND_screen() are deprecated since OpenSSL |
| 1.1.0. Use the functions described above instead. |
| |
| =head1 SEE ALSO |
| |
| L<RAND_bytes(3)>, L<RAND_egd(3)>, |
| L<RAND_load_file(3)>, L<RAND_cleanup(3)> |
| |
| =head1 COPYRIGHT |
| |
| Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. |
| |
| Licensed under the OpenSSL license (the "License"). You may not use |
| this file except in compliance with the License. You can obtain a copy |
| in the file LICENSE in the source distribution or at |
| L<https://www.openssl.org/source/license.html>. |
| |
| =cut |