summaryrefslogtreecommitdiff
path: root/ext/node/ops/crypto/mod.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-10-06 00:16:36 +0200
committerGitHub <noreply@github.com>2023-10-06 00:16:36 +0200
commitf0608a5b9173fbcab4077e0f6a8da2b8c98685dd (patch)
treebcbcd0fceff41d372feb8bb2e0666a6618ffd0ba /ext/node/ops/crypto/mod.rs
parentac464ead49c9f676d7117baa2ab06433e132e188 (diff)
refactor: migrate ext/node/ops to op2 (#20805)
Diffstat (limited to 'ext/node/ops/crypto/mod.rs')
-rw-r--r--ext/node/ops/crypto/mod.rs76
1 files changed, 41 insertions, 35 deletions
diff --git a/ext/node/ops/crypto/mod.rs b/ext/node/ops/crypto/mod.rs
index ce45c0640..372f7dcb5 100644
--- a/ext/node/ops/crypto/mod.rs
+++ b/ext/node/ops/crypto/mod.rs
@@ -2,9 +2,7 @@
use deno_core::error::generic_error;
use deno_core::error::type_error;
use deno_core::error::AnyError;
-use deno_core::op;
use deno_core::op2;
-use deno_core::serde_v8;
use deno_core::unsync::spawn_blocking;
use deno_core::JsBuffer;
use deno_core::OpState;
@@ -41,36 +39,42 @@ mod digest;
mod primes;
pub mod x509;
-#[op]
-pub fn op_node_check_prime(num: serde_v8::BigInt, checks: usize) -> bool {
- primes::is_probably_prime(&num, checks)
+#[op2(fast)]
+pub fn op_node_check_prime(
+ #[bigint] num: i64,
+ #[number] checks: usize,
+) -> bool {
+ primes::is_probably_prime(&BigInt::from(num), checks)
}
-// TODO(bartlomieju): blocked on `op2` crashing on `ArrayBufferView`
-#[op]
+#[op2(fast)]
pub fn op_node_check_prime_bytes(
- bytes: &[u8],
- checks: usize,
+ #[anybuffer] bytes: &[u8],
+ #[number] checks: usize,
) -> Result<bool, AnyError> {
let candidate = BigInt::from_bytes_be(num_bigint::Sign::Plus, bytes);
Ok(primes::is_probably_prime(&candidate, checks))
}
-#[op]
+#[op2(async)]
pub async fn op_node_check_prime_async(
- num: serde_v8::BigInt,
- checks: usize,
+ #[bigint] num: i64,
+ #[number] checks: usize,
) -> Result<bool, AnyError> {
// TODO(@littledivy): use rayon for CPU-bound tasks
- Ok(spawn_blocking(move || primes::is_probably_prime(&num, checks)).await?)
+ Ok(
+ spawn_blocking(move || {
+ primes::is_probably_prime(&BigInt::from(num), checks)
+ })
+ .await?,
+ )
}
-// TODO(bartlomieju): blocked on `op2` supporting returning a future
-#[op]
+#[op2(async)]
pub fn op_node_check_prime_bytes_async(
- bytes: &[u8],
- checks: usize,
-) -> Result<impl Future<Output = Result<bool, AnyError>> + 'static, AnyError> {
+ #[anybuffer] bytes: &[u8],
+ #[number] checks: usize,
+) -> Result<impl Future<Output = Result<bool, AnyError>>, AnyError> {
let candidate = BigInt::from_bytes_be(num_bigint::Sign::Plus, bytes);
// TODO(@littledivy): use rayon for CPU-bound tasks
Ok(async move {
@@ -942,16 +946,17 @@ fn scrypt(
}
}
-#[op]
+#[allow(clippy::too_many_arguments)]
+#[op2]
pub fn op_node_scrypt_sync(
- password: StringOrBuffer,
- salt: StringOrBuffer,
- keylen: u32,
- cost: u32,
- block_size: u32,
- parallelization: u32,
- maxmem: u32,
- output_buffer: &mut [u8],
+ #[serde] password: StringOrBuffer,
+ #[serde] salt: StringOrBuffer,
+ #[smi] keylen: u32,
+ #[smi] cost: u32,
+ #[smi] block_size: u32,
+ #[smi] parallelization: u32,
+ #[smi] maxmem: u32,
+ #[anybuffer] output_buffer: &mut [u8],
) -> Result<(), AnyError> {
scrypt(
password,
@@ -965,15 +970,16 @@ pub fn op_node_scrypt_sync(
)
}
-#[op]
+#[op2(async)]
+#[serde]
pub async fn op_node_scrypt_async(
- password: StringOrBuffer,
- salt: StringOrBuffer,
- keylen: u32,
- cost: u32,
- block_size: u32,
- parallelization: u32,
- maxmem: u32,
+ #[serde] password: StringOrBuffer,
+ #[serde] salt: StringOrBuffer,
+ #[smi] keylen: u32,
+ #[smi] cost: u32,
+ #[smi] block_size: u32,
+ #[smi] parallelization: u32,
+ #[smi] maxmem: u32,
) -> Result<ToJsBuffer, AnyError> {
spawn_blocking(move || {
let mut output_buffer = vec![0u8; keylen as usize];