diff options
Diffstat (limited to 'providers/implementations/rands/seeding/rand_unix.c')
-rw-r--r-- | providers/implementations/rands/seeding/rand_unix.c | 9 |
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; |