diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2020-11-14 02:31:57 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-13 22:01:57 +0100 |
commit | d5661f677e9f5675fc488c4629e85a58764ec3ff (patch) | |
tree | 6878ec81e2da2d41d93e3f429a189edcd4202539 /op_crates/crypto/lib.rs | |
parent | 2c8439bc1e8118225c8ba4d64658c1c6b2182937 (diff) |
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.
Diffstat (limited to 'op_crates/crypto/lib.rs')
-rw-r--r-- | op_crates/crypto/lib.rs | 43 |
1 files changed, 43 insertions, 0 deletions
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<Value, AnyError> { + assert_eq!(zero_copy.len(), 1); + let maybe_seeded_rng = state.try_borrow_mut::<StdRng>(); + 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!({})) +} |