-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<randomness> argument is an estimate of how much randomness is contained in
+Random numbers are a vital part of cryptography, including key generation,
+creating salts, etc., and software-based
+generators must be "seeded" with external randomness before they can be
+used as a cryptographically-secure pseudo-random number generator (CSPRNG).
+The availability of common hardware with special instructions and
+modern operating systems, which may use items such as interrupt jitter
+and network packet timings, can be reasonable sources of seeding material.
+
+RAND_status() indicates whether or not the CSPRNG has been sufficiently
+seeded. If not, functions such as RAND_bytes(3) will fail.
+
+RAND_poll_ex() uses the system's capabilities to obtain a buffer
+containing random bits which can then be used to seed a CSPRNG. The
+exact features used depends on how OpenSSL was configured, and a summary
+can be displayed with the OpenSSL L<version(1)> command. This function
+is normally called as needed by the CSPRNG. The B<arg> parameter is an
+arbitrary pointer which will be passed as an argument to the callback.
+The B<cb> function is called each time there is data to add.
+
+RAND_poll() invokes RAND_poll_ex() with B<cb> and B<arg> set so that it
+will call RAND_add(), to add the randomness to the global CSPRNG.
+
+RAND_add() mixes the B<num> bytes at B<buf> into the PRNG state.
+The B<randomness> argument is an estimate of how much randomness is
+contained in