From 8d9ab6cd764926d4bf1168b122f4a3ff4ea686a0 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 16 Apr 2023 15:15:53 +0200 Subject: [PATCH] Use CCRandomGenerateBytes if present Helps with App Store validation rules. --- configure.ac | 1 + .../internal/randombytes_internal_random.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 5e830db5..7a75b8a4 100644 --- a/configure.ac +++ b/configure.ac @@ -611,6 +611,7 @@ AC_SUBST(CFLAGS_PCLMUL) AC_SUBST(CFLAGS_RDRAND) AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/random.h intrin.h sys/auxv.h]) +AC_CHECK_HEADERS([CommonCrypto/CommonRandom.h]) AC_MSG_CHECKING([if _xgetbv() is available]) AC_LINK_IFELSE( diff --git a/src/libsodium/randombytes/internal/randombytes_internal_random.c b/src/libsodium/randombytes/internal/randombytes_internal_random.c index 24e79696..d69b45e1 100644 --- a/src/libsodium/randombytes/internal/randombytes_internal_random.c +++ b/src/libsodium/randombytes/internal/randombytes_internal_random.c @@ -38,6 +38,9 @@ # define HAVE_LINUX_COMPATIBLE_GETRANDOM # endif #endif +#ifdef HAVE_COMMONCRYPTO_COMMONRANDOM_H +# include +#endif #if !defined(NO_BLOCKING_RANDOM_POLL) && defined(__linux__) # define BLOCK_ON_DEV_RANDOM #endif @@ -175,7 +178,18 @@ randombytes_internal_random_init(void) #else /* _WIN32 */ -# ifdef HAVE_GETENTROPY +# ifdef HAVE_COMMONCRYPTO_COMMONRANDOM_H +static int +randombytes_getentropy(void * const buf, const size_t size) +{ + if (CCRandomGenerateBytes(buf, size) != kCCSuccess) { + return -1; + } + return 0; +} + +# elif defined(HAVE_GETENTROPY) + static int _randombytes_getentropy(void * const buf, const size_t size) {