From f078f64e25079499c21a4248e516a596f0fc7cab Mon Sep 17 00:00:00 2001 From: Joe Richey Date: Thu, 20 Jun 2024 05:09:50 -0700 Subject: [PATCH] Test RDRAND and use_file implementations. Signed-off-by: Joe Richey --- src/lib.rs | 11 +++++++++-- src/rdrand.rs | 6 ++++++ src/use_file.rs | 5 +++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index ddd2d913..55b4a591 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -224,6 +224,13 @@ mod util; mod custom; #[cfg(feature = "std")] mod error_impls; +// If the rdrand feature is enabled, always bring in the rdrand module, so +// that the RDRAND implementation can be tested. +#[cfg(all( + any(target_env = "sgx", feature = "rdrand"), + any(target_arch = "x86_64", target_arch = "x86"), +))] +mod rdrand; pub use crate::error::Error; @@ -330,10 +337,10 @@ cfg_if! { } else if #[cfg(windows)] { #[path = "windows.rs"] mod imp; } else if #[cfg(all(target_arch = "x86_64", target_env = "sgx"))] { - #[path = "rdrand.rs"] mod imp; + use rdrand as imp; } else if #[cfg(all(feature = "rdrand", any(target_arch = "x86_64", target_arch = "x86")))] { - #[path = "rdrand.rs"] mod imp; + use rdrand as imp; } else if #[cfg(all(feature = "js", any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))] { diff --git a/src/rdrand.rs b/src/rdrand.rs index f4c593bd..285cb79f 100644 --- a/src/rdrand.rs +++ b/src/rdrand.rs @@ -93,6 +93,7 @@ fn is_rdrand_good() -> bool { unsafe { self_test() } } +#[allow(dead_code)] pub fn getrandom_inner(dest: &mut [MaybeUninit]) -> Result<(), Error> { static RDRAND_GOOD: LazyBool = LazyBool::new(); if !RDRAND_GOOD.unsync_init(is_rdrand_good) { @@ -121,3 +122,8 @@ unsafe fn rdrand_exact(dest: &mut [MaybeUninit]) -> Option<()> { } Some(()) } + +#[cfg(test)] +mod tests { + crate::tests::define_tests!(super::getrandom_inner); +} diff --git a/src/use_file.rs b/src/use_file.rs index 4fdbe3d7..e7205bcc 100644 --- a/src/use_file.rs +++ b/src/use_file.rs @@ -174,3 +174,8 @@ impl Drop for DropGuard { self.0() } } + +#[cfg(test)] +mod tests { + crate::tests::define_tests!(super::getrandom_inner); +}