X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=doc%2Fcrypto%2FRAND_egd.pod;h=62adbe19b29e9e2263f3ebdd027a28721b652da3;hb=e9ad0d2c31997643e1a7bcacddf8d15a930b5cb8;hp=a40bd96198861e3259eadefeb229f8de9d44a302;hpb=a610374cb256fd2743b8cd956b7b430f916ee41a;p=oweals%2Fopenssl.git diff --git a/doc/crypto/RAND_egd.pod b/doc/crypto/RAND_egd.pod index a40bd96198..62adbe19b2 100644 --- a/doc/crypto/RAND_egd.pod +++ b/doc/crypto/RAND_egd.pod @@ -9,10 +9,37 @@ RAND_egd - query entropy gathering daemon #include int RAND_egd(const char *path); + int RAND_egd_bytes(const char *path, int bytes); + + int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); =head1 DESCRIPTION RAND_egd() queries the entropy gathering daemon EGD on socket B. +It queries 255 bytes and uses L to seed the +OpenSSL built-in PRNG. RAND_egd(path) is a wrapper for +RAND_egd_bytes(path, 255); + +RAND_egd_bytes() queries the entropy gathering daemon EGD on socket B. +It queries B bytes and uses L to seed the +OpenSSL built-in PRNG. +This function is more flexible than RAND_egd(). +When only one secret key must +be generated, it is not necessary to request the full amount 255 bytes from +the EGD socket. This can be advantageous, since the amount of entropy +that can be retrieved from EGD over time is limited. + +RAND_query_egd_bytes() performs the actual query of the EGD daemon on socket +B. If B is given, B bytes are queried and written into +B. If B is NULL, B bytes are queried and used to seed the +OpenSSL built-in PRNG using L. + +=head1 NOTES + +On systems without /dev/*random devices providing entropy from the kernel, +the EGD entropy gathering daemon can be used to collect entropy. It provides +a socket interface through which entropy can be gathered in chunks up to +255 bytes. Several chunks can be queried during one connection. EGD is available from http://www.lothar.com/tech/crypto/ (C to install). It is run as B @@ -21,18 +48,38 @@ RAND_egd() is called with that path as an argument, it tries to read random bytes that EGD has collected. The read is performed in non-blocking mode. +Alternatively, the EGD-interface compatible daemon PRNGD can be used. It is +available from +http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html . +PRNGD does employ an internal PRNG itself and can therefore never run +out of entropy. + +OpenSSL automatically queries EGD when entropy is requested via RAND_bytes() +or the status is checked via RAND_status() for the first time, if the socket +is located at /var/run/egd-pool, /dev/egd-pool or /etc/egd-pool. + =head1 RETURN VALUE -RAND_egd() returns the number of bytes read from the daemon on -success, and -1 if the connection failed or the daemon did not return -enough data to fully seed the PRNG. +RAND_egd() and RAND_egd_bytes() return the number of bytes read from the +daemon on success, and -1 if the connection failed or the daemon did not +return enough data to fully seed the PRNG. + +RAND_query_egd_bytes() returns the number of bytes read from the daemon on +success, and -1 if the connection failed. The PRNG state is not considered. =head1 SEE ALSO -L, L, L +L, L, +L =head1 HISTORY RAND_egd() is available since OpenSSL 0.9.5. +RAND_egd_bytes() is available since OpenSSL 0.9.6. + +RAND_query_egd_bytes() is available since OpenSSL 0.9.7. + +The automatic query of /var/run/egd-pool et al was added in OpenSSL 0.9.7. + =cut