summaryrefslogtreecommitdiffstats
path: root/crypto/rand/rand_unix.c
diff options
context:
space:
mode:
authorKurt Roeckx <kurt@roeckx.be>2018-02-10 00:30:29 +0100
committerKurt Roeckx <kurt@roeckx.be>2018-02-13 21:15:30 +0100
commit72960279562e9af53264155a46b4a0b6a40f9590 (patch)
tree3e68eb72997f1a8b1598a6836c8dea4c9c64fd24 /crypto/rand/rand_unix.c
parentf11a023adaae8ba037f952fd72dfbcc34733c993 (diff)
Use both getrandom() and /dev/urandom by default on Linux.
getrandom() is now used on Linux by default when using Linux >= 3.17 and glibc >= 2.25 Reviewed-by: Rich Salz <rsalz@openssl.org> GH: #5314
Diffstat (limited to 'crypto/rand/rand_unix.c')
-rw-r--r--crypto/rand/rand_unix.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c
index f5a59cb28a..bfd7ef0455 100644
--- a/crypto/rand/rand_unix.c
+++ b/crypto/rand/rand_unix.c
@@ -14,10 +14,6 @@
#include "rand_lcl.h"
#include <stdio.h>
-#ifdef OPENSSL_RAND_SEED_GETRANDOM
-# include <linux/random.h>
-#endif
-
#if (defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI)) && \
!defined(OPENSSL_RAND_SEED_NONE)
# error "UEFI and VXWorks only support seeding NONE"
@@ -123,11 +119,19 @@ size_t RAND_POOL_acquire_entropy(RAND_POOL *pool)
# endif
# if defined(OPENSSL_RAND_SEED_OS)
-# if defined(DEVRANDOM)
-# define OPENSSL_RAND_SEED_DEVRANDOM
-# else
+# if !defined(DEVRANDOM)
# error "OS seeding requires DEVRANDOM to be configured"
# endif
+# define OPENSSL_RAND_SEED_DEVRANDOM
+# if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+# if __GLIBC_PREREQ(2, 25)
+# define OPENSSL_RAND_SEED_GETRANDOM
+# endif
+# endif
+# endif
+
+# ifdef OPENSSL_RAND_SEED_GETRANDOM
+# include <sys/random.h>
# endif
# if defined(OPENSSL_RAND_SEED_LIBRANDOM)