sys: add support for arc4random
thanks to Dmitrij D. Czarkoff for the original patch
This commit is contained in:
parent
a6cb27837b
commit
d76092bbef
2 changed files with 9 additions and 0 deletions
5
mk/re.mk
5
mk/re.mk
|
@ -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
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue