diff options
Diffstat (limited to 'vendor/fuchsia-cprng/src')
-rw-r--r-- | vendor/fuchsia-cprng/src/lib.rs | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/vendor/fuchsia-cprng/src/lib.rs b/vendor/fuchsia-cprng/src/lib.rs deleted file mode 100644 index 5074690..0000000 --- a/vendor/fuchsia-cprng/src/lib.rs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2019 The Fuchsia Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -//! Type-safe bindings for the Zircon kernel's CPRNG. - -#![no_std] -#![deny(warnings)] - -/// Draw random bytes from the kernel's CPRNG to fill the given buffer. -/// -/// Wraps the -/// [zx_cprng_draw](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/docs/syscalls/cprng_draw.md) -/// syscall. -pub fn cprng_draw(buffer: &mut [u8]) { - unsafe { zx_cprng_draw(buffer.as_mut_ptr(), buffer.len()) }; -} - -#[link(name = "zircon")] -extern "C" { - fn zx_cprng_draw(buffer: *mut u8, length: usize); -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn cprng() { - let mut buffer = [0; 20]; - cprng_draw(&mut buffer); - let mut first_zero = 0; - let mut last_zero = 0; - for _ in 0..30 { - let mut buffer = [0; 20]; - cprng_draw(&mut buffer); - if buffer[0] == 0 { - first_zero += 1; - } - if buffer[19] == 0 { - last_zero += 1; - } - } - assert_ne!(first_zero, 30); - assert_ne!(last_zero, 30); - } - - #[test] - fn cprng_large() { - let mut buffer = [0; 1024]; - cprng_draw(&mut buffer); - - for mut s in buffer.chunks_mut(256) { - cprng_draw(&mut s); - } - } -} |