sys: add support for arc4random

thanks to Dmitrij D. Czarkoff for the original patch
This commit is contained in:
Alfred E. Heggestad 2016-04-15 07:09:59 +00:00
parent a6cb27837b
commit d76092bbef
2 changed files with 9 additions and 0 deletions

View file

@ -290,6 +290,7 @@ ifeq ($(OS),openbsd)
AR := ar
AFLAGS := cru
HAVE_KQUEUE := 1
HAVE_ARC4RANDOM := 1
endif
ifeq ($(OS),win32)
CFLAGS += -DWIN32 -D_WIN32_WINNT=0x0501 -D__ssize_t_defined
@ -578,6 +579,10 @@ CFLAGS += -DHAVE_GAI_STRERROR
endif
endif
ifneq ($(HAVE_ARC4RANDOM),)
CFLAGS += -DHAVE_ARC4RANDOM
endif
##############################################################################
#

View file

@ -85,6 +85,8 @@ uint32_t rand_u32(void)
ERR_GET_REASON(ERR_get_error()));
ERR_clear_error();
}
#elif defined(HAVE_ARC4RANDOM)
v = arc4random();
#elif defined(WIN32)
v = (rand() << 16) + rand(); /* note: 16-bit rand */
#else
@ -161,6 +163,8 @@ void rand_bytes(uint8_t *p, size_t size)
ERR_GET_REASON(ERR_get_error()));
ERR_clear_error();
}
#elif defined (HAVE_ARC4RANDOM)
arc4random_buf(p, size);
#else
while (size--) {
p[size] = rand_u32();