summaryrefslogtreecommitdiffstats
path: root/providers/implementations/rands
diff options
context:
space:
mode:
authorDavid CARLIER <devnexen@gmail.com>2021-06-26 14:12:38 +0100
committerPauli <pauli@openssl.org>2021-06-29 19:03:28 +1000
commitf0b9e75e4f9d6ae74389cd1b019b77cf2bd01033 (patch)
tree6c6f3ac28999d94ef8002b4a65024b1523369db1 /providers/implementations/rands
parent19c0b46b83335b36a9816abef4e82f74863a4e0a (diff)
darwin platform replacing getentropy usage by platform api instead.
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15924)
Diffstat (limited to 'providers/implementations/rands')
-rw-r--r--providers/implementations/rands/seeding/rand_unix.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/providers/implementations/rands/seeding/rand_unix.c b/providers/implementations/rands/seeding/rand_unix.c
index 2e6429344c..eab08a8150 100644
--- a/providers/implementations/rands/seeding/rand_unix.c
+++ b/providers/implementations/rands/seeding/rand_unix.c
@@ -40,6 +40,9 @@
# include <sys/param.h>
# include <sys/random.h>
#endif
+#if defined(__APPLE__)
+# include <CommonCrypto/CommonRandom.h>
+#endif
#if (defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_SYS_VXWORKS)) \
|| defined(__DJGPP__)
@@ -366,6 +369,12 @@ static ssize_t syscall_random(void *buf, size_t buflen)
if (errno != ENOSYS)
return -1;
}
+# elif defined(__APPLE__)
+
+ if (CCRandomGenerateBytes(buf, buflen) == kCCSuccess)
+ return (ssize_t)buflen;
+
+ return -1;
# else
union {
void *p;