| =pod |
| |
| =head1 NAME |
| |
| rand - pseudo-random number generator |
| |
| =head1 SYNOPSIS |
| |
| #include <openssl/rand.h> |
| |
| int RAND_set_rand_engine(ENGINE *engine); |
| |
| int RAND_bytes(unsigned char *buf, int num); |
| int RAND_pseudo_bytes(unsigned char *buf, int num); |
| |
| void RAND_seed(const void *buf, int num); |
| void RAND_add(const void *buf, int num, int entropy); |
| int RAND_status(void); |
| |
| int RAND_load_file(const char *file, long max_bytes); |
| int RAND_write_file(const char *file); |
| const char *RAND_file_name(char *file, size_t num); |
| |
| int RAND_egd(const char *path); |
| |
| void RAND_set_rand_method(const RAND_METHOD *meth); |
| const RAND_METHOD *RAND_get_rand_method(void); |
| RAND_METHOD *RAND_OpenSSL(void); |
| |
| /* For Win32 only */ |
| void RAND_screen(void); |
| int RAND_event(UINT, WPARAM, LPARAM); |
| |
| Deprecated: |
| |
| #if OPENSSL_API_COMPAT < 0x10100000L |
| void RAND_cleanup(void) |
| #endif |
| |
| =head1 DESCRIPTION |
| |
| Since the introduction of the ENGINE API, the recommended way of controlling |
| default implementations is by using the ENGINE API functions. The default |
| B<RAND_METHOD>, as set by RAND_set_rand_method() and returned by |
| RAND_get_rand_method(), is only used if no ENGINE has been set as the default |
| "rand" implementation. Hence, these two functions are no longer the recommended |
| way to control defaults. |
| |
| If an alternative B<RAND_METHOD> implementation is being used (either set |
| directly or as provided by an ENGINE module), then it is entirely responsible |
| for the generation and management of a cryptographically secure PRNG stream. The |
| mechanisms described below relate solely to the software PRNG implementation |
| built in to OpenSSL and used by default. |
| |
| These functions implement a cryptographically secure pseudo-random |
| number generator (PRNG). It is used by other library functions for |
| example to generate random keys, and applications can use it when they |
| need randomness. |
| |
| A cryptographic PRNG must be seeded with unpredictable data such as |
| mouse movements or keys pressed at random by the user. This is |
| described in L<RAND_add(3)>. Its state can be saved in a seed file |
| (see L<RAND_load_file(3)>) to avoid having to go through the |
| seeding process whenever the application is started. |
| |
| L<RAND_bytes(3)> describes how to obtain random data from the |
| PRNG. |
| |
| =head1 SEE ALSO |
| |
| L<BN_rand(3)>, L<RAND_add(3)>, |
| L<RAND_load_file(3)>, L<RAND_egd(3)>, |
| L<RAND_bytes(3)>, |
| L<RAND_set_rand_method(3)>, |
| L<RAND_cleanup(3)> |
| |
| =cut |