summaryrefslogtreecommitdiff
path: root/ext/node/crypto/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/crypto/mod.rs')
-rw-r--r--ext/node/crypto/mod.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/node/crypto/mod.rs b/ext/node/crypto/mod.rs
index 55a7a5870..f818b96af 100644
--- a/ext/node/crypto/mod.rs
+++ b/ext/node/crypto/mod.rs
@@ -9,6 +9,8 @@ use deno_core::StringOrBuffer;
use deno_core::ZeroCopyBuf;
use hkdf::Hkdf;
use num_bigint::BigInt;
+use rand::distributions::Distribution;
+use rand::distributions::Uniform;
use rand::Rng;
use std::future::Future;
use std::rc::Rc;
@@ -478,3 +480,13 @@ pub async fn op_node_hkdf_async(
})
.await?
}
+
+#[op]
+pub fn op_node_random_int(min: i32, max: i32) -> Result<i32, AnyError> {
+ let mut rng = rand::thread_rng();
+ // Uniform distribution is required to avoid Modulo Bias
+ // https://en.wikipedia.org/wiki/Fisher–Yates_shuffle#Modulo_bias
+ let dist = Uniform::from(min..max);
+
+ Ok(dist.sample(&mut rng))
+}