summaryrefslogtreecommitdiff
path: root/vendor/getrandom/src/backends/fuchsia.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/getrandom/src/backends/fuchsia.rs')
-rw-r--r--vendor/getrandom/src/backends/fuchsia.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/vendor/getrandom/src/backends/fuchsia.rs b/vendor/getrandom/src/backends/fuchsia.rs
new file mode 100644
index 00000000..b5f1ade5
--- /dev/null
+++ b/vendor/getrandom/src/backends/fuchsia.rs
@@ -0,0 +1,16 @@
+//! Implementation for Fuchsia Zircon
+use crate::Error;
+use core::mem::MaybeUninit;
+
+pub use crate::util::{inner_u32, inner_u64};
+
+#[link(name = "zircon")]
+extern "C" {
+ fn zx_cprng_draw(buffer: *mut u8, length: usize);
+}
+
+#[inline]
+pub fn fill_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
+ unsafe { zx_cprng_draw(dest.as_mut_ptr().cast::<u8>(), dest.len()) }
+ Ok(())
+}