1 //! Implementation for macOS
2 use crate::{util_libc::last_os_error, Error};
3 use core::mem::MaybeUninit;
4 
5 extern "C" {
6     // Supported as of macOS 10.12+.
getentropy(buf: *mut u8, size: libc::size_t) -> libc::c_int7     fn getentropy(buf: *mut u8, size: libc::size_t) -> libc::c_int;
8 }
9 
getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error>10 pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
11     for chunk in dest.chunks_mut(256) {
12         let ret = unsafe { getentropy(chunk.as_mut_ptr() as *mut u8, chunk.len()) };
13         if ret != 0 {
14             return Err(last_os_error());
15         }
16     }
17     Ok(())
18 }
19