Add seed operation for unix RAND method

This commit is contained in:
Nicolas Williams
2016-04-14 15:57:35 -05:00
parent 2cd233db43
commit f064f2d14b

View File

@@ -68,8 +68,33 @@ _hc_unix_device_fd(int flags, const char **fn)
}
static void
unix_seed(const void *indata, int size)
unix_seed(const void *p, int size)
{
const unsigned char *indata = p;
ssize_t count;
int fd;
if (size < 0)
return;
else if (size == 0)
return;
fd = _hc_unix_device_fd(O_RDONLY, NULL);
if (fd < 0)
return;
while (size > 0) {
count = write(fd, indata, size);
if (count < 0 && errno == EINTR)
continue;
else if (count <= 0) {
close(fd);
return;
}
indata += count;
size -= count;
}
close(fd);
}