use r_efi::protocols::rng; use crate::sys::pal::helpers; pub fn fill_bytes(bytes: &mut [u8]) { let handles = helpers::locate_handles(rng::PROTOCOL_GUID).expect("failed to generate random data"); for handle in handles { if let Ok(protocol) = helpers::open_protocol::(handle, rng::PROTOCOL_GUID) { let r = unsafe { ((*protocol.as_ptr()).get_rng)( protocol.as_ptr(), crate::ptr::null_mut(), bytes.len(), bytes.as_mut_ptr(), ) }; if r.is_error() { continue; } else { return; } } } panic!("failed to generate random data"); }