From 41dc39b6fdef0e1c3f3b9aac43d9f469bb268dac Mon Sep 17 00:00:00 2001 From: Paul Dicker Date: Sat, 12 May 2018 14:15:20 +0200 Subject: [PATCH 1/2] Ignore stdweb feature with emscripten --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index bd7882cd33b..882ff73e0fd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -188,7 +188,7 @@ #[cfg(feature="serde1")] extern crate serde; #[cfg(feature="serde1")] #[macro_use] extern crate serde_derive; -#[cfg(all(target_arch = "wasm32", feature = "stdweb"))] +#[cfg(all(target_arch="wasm32", not(target_os="emscripten"), feature="stdweb"))] #[macro_use] extern crate stdweb; From 36b6cffc04a2becdc0eddf43974cc0b55d86f21e Mon Sep 17 00:00:00 2001 From: Paul Dicker Date: Sat, 12 May 2018 21:50:56 +0200 Subject: [PATCH 2/2] Add note about Emscripten OsRng source --- src/rngs/os.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/rngs/os.rs b/src/rngs/os.rs index 75cee9073de..96b8d90f85b 100644 --- a/src/rngs/os.rs +++ b/src/rngs/os.rs @@ -37,8 +37,11 @@ use rand_core::{CryptoRng, RngCore, Error, impls}; /// otherwise from `/dev/urandom`. /// - macOS, iOS: calls `SecRandomCopyBytes`. /// - Windows: calls `RtlGenRandom`. -/// - WASM: calls `window.crypto.getRandomValues` in browsers, -/// and in Node.js `require("crypto").randomBytes`. +/// - WASM (with `stdweb` feature): calls `window.crypto.getRandomValues` in +/// browsers, and in Node.js `require("crypto").randomBytes`. +/// - Emscripten: reads from emulated `/dev/urandom`, which maps to the same +/// interfaces as `stdweb`, but falls back to the insecure `Math.random()` if +/// unavailable. /// - OpenBSD: calls `getentropy(2)`. /// - FreeBSD: uses the `kern.arandom` `sysctl(2)` mib. /// - Fuchsia: calls `cprng_draw`.