From d5661f677e9f5675fc488c4629e85a58764ec3ff Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Sat, 14 Nov 2020 02:31:57 +0530 Subject: refactor: deno_crypto op crate (#7956) This commit factors out "deno_crypto" op crate. "rand" crate dependency was consequently moved to "deno_crypto" crate and reexported. --- op_crates/crypto/lib.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 op_crates/crypto/lib.rs (limited to 'op_crates/crypto/lib.rs') diff --git a/op_crates/crypto/lib.rs b/op_crates/crypto/lib.rs new file mode 100644 index 000000000..a211a29b3 --- /dev/null +++ b/op_crates/crypto/lib.rs @@ -0,0 +1,43 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +#![deny(warnings)] + +use deno_core::error::AnyError; +use deno_core::serde_json::json; +use deno_core::serde_json::Value; +use deno_core::JsRuntime; +use deno_core::OpState; +use deno_core::ZeroCopyBuf; +use rand::rngs::StdRng; +use rand::thread_rng; +use rand::Rng; + +pub use rand; // Re-export rand + +/// Execute this crates' JS source files. +pub fn init(isolate: &mut JsRuntime) { + let files = vec![( + "deno:op_crates/crypto/01_crypto.js", + include_str!("01_crypto.js"), + )]; + for (url, source_code) in files { + isolate.execute(url, source_code).unwrap(); + } +} + +pub fn op_get_random_values( + state: &mut OpState, + _args: Value, + zero_copy: &mut [ZeroCopyBuf], +) -> Result { + assert_eq!(zero_copy.len(), 1); + let maybe_seeded_rng = state.try_borrow_mut::(); + if let Some(seeded_rng) = maybe_seeded_rng { + seeded_rng.fill(&mut *zero_copy[0]); + } else { + let mut rng = thread_rng(); + rng.fill(&mut *zero_copy[0]); + } + + Ok(json!({})) +} -- cgit v1.2.3