diff options
Diffstat (limited to 'ext/crypto')
-rw-r--r-- | ext/crypto/decrypt.rs | 17 | ||||
-rw-r--r-- | ext/crypto/ed25519.rs | 6 | ||||
-rw-r--r-- | ext/crypto/encrypt.rs | 17 | ||||
-rw-r--r-- | ext/crypto/export_key.rs | 16 | ||||
-rw-r--r-- | ext/crypto/generate_key.rs | 4 | ||||
-rw-r--r-- | ext/crypto/import_key.rs | 49 | ||||
-rw-r--r-- | ext/crypto/lib.rs | 39 | ||||
-rw-r--r-- | ext/crypto/shared.rs | 45 | ||||
-rw-r--r-- | ext/crypto/x25519.rs | 6 |
9 files changed, 106 insertions, 93 deletions
diff --git a/ext/crypto/decrypt.rs b/ext/crypto/decrypt.rs index fc54fe818..59679614f 100644 --- a/ext/crypto/decrypt.rs +++ b/ext/crypto/decrypt.rs @@ -21,7 +21,8 @@ use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::op; use deno_core::task::spawn_blocking; -use deno_core::ZeroCopyBuf; +use deno_core::JsBuffer; +use deno_core::ToJsBuffer; use rsa::pkcs1::DecodeRsaPrivateKey; use rsa::PaddingScheme; use serde::Deserialize; @@ -36,7 +37,7 @@ use crate::shared::*; #[derive(Deserialize)] #[serde(rename_all = "camelCase")] pub struct DecryptOptions { - key: RawKeyData, + key: V8RawKeyData, #[serde(flatten)] algorithm: DecryptAlgorithm, } @@ -77,8 +78,8 @@ pub enum DecryptAlgorithm { #[op] pub async fn op_crypto_decrypt( opts: DecryptOptions, - data: ZeroCopyBuf, -) -> Result<ZeroCopyBuf, AnyError> { + data: JsBuffer, +) -> Result<ToJsBuffer, AnyError> { let key = opts.key; let fun = move || match opts.algorithm { DecryptAlgorithm::RsaOaep { hash, label } => { @@ -104,7 +105,7 @@ pub async fn op_crypto_decrypt( } fn decrypt_rsa_oaep( - key: RawKeyData, + key: V8RawKeyData, hash: ShaHash, label: Vec<u8>, data: &[u8], @@ -143,7 +144,7 @@ fn decrypt_rsa_oaep( } fn decrypt_aes_cbc( - key: RawKeyData, + key: V8RawKeyData, length: usize, iv: Vec<u8>, data: &[u8], @@ -281,7 +282,7 @@ fn decrypt_aes_gcm_gen<N: ArrayLength<u8>>( } fn decrypt_aes_ctr( - key: RawKeyData, + key: V8RawKeyData, key_length: usize, counter: &[u8], ctr_length: usize, @@ -315,7 +316,7 @@ fn decrypt_aes_ctr( } fn decrypt_aes_gcm( - key: RawKeyData, + key: V8RawKeyData, length: usize, tag_length: usize, iv: Vec<u8>, diff --git a/ext/crypto/ed25519.rs b/ext/crypto/ed25519.rs index 784583c6b..98eabbd59 100644 --- a/ext/crypto/ed25519.rs +++ b/ext/crypto/ed25519.rs @@ -2,7 +2,7 @@ use deno_core::error::AnyError; use deno_core::op; -use deno_core::ZeroCopyBuf; +use deno_core::ToJsBuffer; use elliptic_curve::pkcs8::PrivateKeyInfo; use rand::rngs::OsRng; use rand::RngCore; @@ -105,7 +105,7 @@ pub fn op_crypto_import_pkcs8_ed25519(key_data: &[u8], out: &mut [u8]) -> bool { #[op] pub fn op_crypto_export_spki_ed25519( pubkey: &[u8], -) -> Result<ZeroCopyBuf, AnyError> { +) -> Result<ToJsBuffer, AnyError> { let key_info = spki::SubjectPublicKeyInfo { algorithm: spki::AlgorithmIdentifier { // id-Ed25519 @@ -120,7 +120,7 @@ pub fn op_crypto_export_spki_ed25519( #[op] pub fn op_crypto_export_pkcs8_ed25519( pkey: &[u8], -) -> Result<ZeroCopyBuf, AnyError> { +) -> Result<ToJsBuffer, AnyError> { // This should probably use OneAsymmetricKey instead let pk_info = rsa::pkcs8::PrivateKeyInfo { public_key: None, diff --git a/ext/crypto/encrypt.rs b/ext/crypto/encrypt.rs index 2831ca0f4..0dc300538 100644 --- a/ext/crypto/encrypt.rs +++ b/ext/crypto/encrypt.rs @@ -20,7 +20,8 @@ use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::op; use deno_core::task::spawn_blocking; -use deno_core::ZeroCopyBuf; +use deno_core::JsBuffer; +use deno_core::ToJsBuffer; use rand::rngs::OsRng; use rsa::pkcs1::DecodeRsaPublicKey; use rsa::PaddingScheme; @@ -37,7 +38,7 @@ use crate::shared::*; #[derive(Deserialize)] #[serde(rename_all = "camelCase")] pub struct EncryptOptions { - key: RawKeyData, + key: V8RawKeyData, #[serde(flatten)] algorithm: EncryptAlgorithm, } @@ -78,8 +79,8 @@ pub enum EncryptAlgorithm { #[op] pub async fn op_crypto_encrypt( opts: EncryptOptions, - data: ZeroCopyBuf, -) -> Result<ZeroCopyBuf, AnyError> { + data: JsBuffer, +) -> Result<ToJsBuffer, AnyError> { let key = opts.key; let fun = move || match opts.algorithm { EncryptAlgorithm::RsaOaep { hash, label } => { @@ -105,7 +106,7 @@ pub async fn op_crypto_encrypt( } fn encrypt_rsa_oaep( - key: RawKeyData, + key: V8RawKeyData, hash: ShaHash, label: Vec<u8>, data: &[u8], @@ -145,7 +146,7 @@ fn encrypt_rsa_oaep( } fn encrypt_aes_cbc( - key: RawKeyData, + key: V8RawKeyData, length: usize, iv: Vec<u8>, data: &[u8], @@ -218,7 +219,7 @@ fn encrypt_aes_gcm_general<N: ArrayLength<u8>>( } fn encrypt_aes_gcm( - key: RawKeyData, + key: V8RawKeyData, length: usize, tag_length: usize, iv: Vec<u8>, @@ -277,7 +278,7 @@ where } fn encrypt_aes_ctr( - key: RawKeyData, + key: V8RawKeyData, key_length: usize, counter: &[u8], ctr_length: usize, diff --git a/ext/crypto/export_key.rs b/ext/crypto/export_key.rs index ec76bac92..13f7357fa 100644 --- a/ext/crypto/export_key.rs +++ b/ext/crypto/export_key.rs @@ -5,7 +5,7 @@ use const_oid::ObjectIdentifier; use deno_core::error::custom_error; use deno_core::error::AnyError; use deno_core::op; -use deno_core::ZeroCopyBuf; +use deno_core::ToJsBuffer; use elliptic_curve::sec1::ToEncodedPoint; use p256::pkcs8::DecodePrivateKey; use rsa::pkcs1::UIntRef; @@ -59,9 +59,9 @@ pub enum ExportKeyAlgorithm { #[derive(Serialize)] #[serde(untagged)] pub enum ExportKeyResult { - Raw(ZeroCopyBuf), - Pkcs8(ZeroCopyBuf), - Spki(ZeroCopyBuf), + Raw(ToJsBuffer), + Pkcs8(ToJsBuffer), + Spki(ToJsBuffer), JwkSecret { k: String, }, @@ -93,7 +93,7 @@ pub enum ExportKeyResult { #[op] pub fn op_crypto_export_key( opts: ExportKeyOptions, - key_data: RawKeyData, + key_data: V8RawKeyData, ) -> Result<ExportKeyResult, AnyError> { match opts.algorithm { ExportKeyAlgorithm::RsassaPkcs1v15 {} @@ -119,7 +119,7 @@ fn bytes_to_b64(bytes: &[u8]) -> String { fn export_key_rsa( format: ExportKeyFormat, - key_data: RawKeyData, + key_data: V8RawKeyData, ) -> Result<ExportKeyResult, deno_core::anyhow::Error> { match format { ExportKeyFormat::Spki => { @@ -212,7 +212,7 @@ fn export_key_rsa( fn export_key_symmetric( format: ExportKeyFormat, - key_data: RawKeyData, + key_data: V8RawKeyData, ) -> Result<ExportKeyResult, deno_core::anyhow::Error> { match format { ExportKeyFormat::JwkSecret => { @@ -228,7 +228,7 @@ fn export_key_symmetric( fn export_key_ec( format: ExportKeyFormat, - key_data: RawKeyData, + key_data: V8RawKeyData, algorithm: ExportKeyAlgorithm, named_curve: EcNamedCurve, ) -> Result<ExportKeyResult, deno_core::anyhow::Error> { diff --git a/ext/crypto/generate_key.rs b/ext/crypto/generate_key.rs index 426c61376..9e2d14ea7 100644 --- a/ext/crypto/generate_key.rs +++ b/ext/crypto/generate_key.rs @@ -3,7 +3,7 @@ use deno_core::error::AnyError; use deno_core::op; use deno_core::task::spawn_blocking; -use deno_core::ZeroCopyBuf; +use deno_core::ToJsBuffer; use elliptic_curve::rand_core::OsRng; use num_traits::FromPrimitive; use once_cell::sync::Lazy; @@ -45,7 +45,7 @@ pub enum GenerateKeyOptions { #[op] pub async fn op_crypto_generate_key( opts: GenerateKeyOptions, -) -> Result<ZeroCopyBuf, AnyError> { +) -> Result<ToJsBuffer, AnyError> { let fun = || match opts { GenerateKeyOptions::Rsa { modulus_length, diff --git a/ext/crypto/import_key.rs b/ext/crypto/import_key.rs index 42eab0e6c..c3d60101c 100644 --- a/ext/crypto/import_key.rs +++ b/ext/crypto/import_key.rs @@ -2,7 +2,8 @@ use deno_core::error::AnyError; use deno_core::op; -use deno_core::ZeroCopyBuf; +use deno_core::JsBuffer; +use deno_core::ToJsBuffer; use elliptic_curve::pkcs8::PrivateKeyInfo; use p256::pkcs8::EncodePrivateKey; use ring::signature::EcdsaKeyPair; @@ -18,9 +19,9 @@ use crate::shared::*; #[derive(Deserialize)] #[serde(rename_all = "camelCase")] pub enum KeyData { - Spki(ZeroCopyBuf), - Pkcs8(ZeroCopyBuf), - Raw(ZeroCopyBuf), + Spki(JsBuffer), + Pkcs8(JsBuffer), + Raw(JsBuffer), JwkSecret { k: String, }, @@ -73,17 +74,17 @@ pub enum ImportKeyOptions { pub enum ImportKeyResult { #[serde(rename_all = "camelCase")] Rsa { - raw_data: RawKeyData, + raw_data: RustRawKeyData, modulus_length: usize, - public_exponent: ZeroCopyBuf, + public_exponent: ToJsBuffer, }, #[serde(rename_all = "camelCase")] - Ec { raw_data: RawKeyData }, + Ec { raw_data: RustRawKeyData }, #[serde(rename_all = "camelCase")] #[allow(dead_code)] - Aes { raw_data: RawKeyData }, + Aes { raw_data: RustRawKeyData }, #[serde(rename_all = "camelCase")] - Hmac { raw_data: RawKeyData }, + Hmac { raw_data: RustRawKeyData }, } #[op] @@ -136,7 +137,7 @@ fn import_key_rsa_jwk( let modulus_length = public_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Public(data.into()), + raw_data: RustRawKeyData::Public(data.into()), modulus_length, public_exponent, }) @@ -181,7 +182,7 @@ fn import_key_rsa_jwk( let modulus_length = private_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Private(data.into()), + raw_data: RustRawKeyData::Private(data.into()), modulus_length, public_exponent, }) @@ -228,7 +229,7 @@ fn import_key_rsassa( let modulus_length = public_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Public(data), + raw_data: RustRawKeyData::Public(data), modulus_length, public_exponent, }) @@ -267,7 +268,7 @@ fn import_key_rsassa( let modulus_length = private_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Private(data), + raw_data: RustRawKeyData::Private(data), modulus_length, public_exponent, }) @@ -317,7 +318,7 @@ fn import_key_rsapss( let modulus_length = public_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Public(data), + raw_data: RustRawKeyData::Public(data), modulus_length, public_exponent, }) @@ -356,7 +357,7 @@ fn import_key_rsapss( let modulus_length = private_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Private(data), + raw_data: RustRawKeyData::Private(data), modulus_length, public_exponent, }) @@ -406,7 +407,7 @@ fn import_key_rsaoaep( let modulus_length = public_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Public(data), + raw_data: RustRawKeyData::Public(data), modulus_length, public_exponent, }) @@ -445,7 +446,7 @@ fn import_key_rsaoaep( let modulus_length = private_key.modulus.as_bytes().len() * 8; Ok(ImportKeyResult::Rsa { - raw_data: RawKeyData::Private(data), + raw_data: RustRawKeyData::Private(data), modulus_length, public_exponent, }) @@ -513,7 +514,7 @@ fn import_key_ec_jwk( let point_bytes = import_key_ec_jwk_to_point(x, y, named_curve)?; Ok(ImportKeyResult::Ec { - raw_data: RawKeyData::Public(point_bytes.into()), + raw_data: RustRawKeyData::Public(point_bytes.into()), }) } KeyData::JwkPrivateEc { d, x, y } => { @@ -553,7 +554,7 @@ fn import_key_ec_jwk( ); Ok(ImportKeyResult::Ec { - raw_data: RawKeyData::Private(pkcs8_der.as_bytes().to_vec().into()), + raw_data: RustRawKeyData::Private(pkcs8_der.as_bytes().to_vec().into()), }) } _ => unreachable!(), @@ -606,7 +607,7 @@ fn import_key_ec( _ => return Err(not_supported_error("Unsupported named curve")), }; Ok(ImportKeyResult::Ec { - raw_data: RawKeyData::Public(data), + raw_data: RustRawKeyData::Public(data.to_vec().into()), }) } KeyData::Pkcs8(data) => { @@ -660,7 +661,7 @@ fn import_key_ec( } Ok(ImportKeyResult::Ec { - raw_data: RawKeyData::Private(data), + raw_data: RustRawKeyData::Private(data.to_vec().into()), }) } KeyData::Spki(data) => { @@ -744,7 +745,7 @@ fn import_key_ec( } Ok(ImportKeyResult::Ec { - raw_data: RawKeyData::Public(encoded_key.into()), + raw_data: RustRawKeyData::Public(encoded_key.into()), }) } KeyData::JwkPublicEc { .. } | KeyData::JwkPrivateEc { .. } => { @@ -760,7 +761,7 @@ fn import_key_aes(key_data: KeyData) -> Result<ImportKeyResult, AnyError> { let data = base64::decode_config(k, URL_SAFE_FORGIVING) .map_err(|_| data_error("invalid key data"))?; ImportKeyResult::Hmac { - raw_data: RawKeyData::Secret(data.into()), + raw_data: RustRawKeyData::Secret(data.into()), } } _ => return Err(unsupported_format()), @@ -773,7 +774,7 @@ fn import_key_hmac(key_data: KeyData) -> Result<ImportKeyResult, AnyError> { let data = base64::decode_config(k, URL_SAFE_FORGIVING) .map_err(|_| data_error("invalid key data"))?; ImportKeyResult::Hmac { - raw_data: RawKeyData::Secret(data.into()), + raw_data: RustRawKeyData::Secret(data.into()), } } _ => return Err(unsupported_format()), diff --git a/ext/crypto/lib.rs b/ext/crypto/lib.rs index dc5faf5e7..1765697c6 100644 --- a/ext/crypto/lib.rs +++ b/ext/crypto/lib.rs @@ -9,10 +9,11 @@ use deno_core::error::not_supported; use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::op; +use deno_core::ToJsBuffer; use deno_core::task::spawn_blocking; +use deno_core::JsBuffer; use deno_core::OpState; -use deno_core::ZeroCopyBuf; use serde::Deserialize; use shared::operation_error; @@ -69,7 +70,7 @@ use crate::key::Algorithm; use crate::key::CryptoHash; use crate::key::CryptoNamedCurve; use crate::key::HkdfOutput; -use crate::shared::RawKeyData; +use crate::shared::V8RawKeyData; deno_core::extension!(deno_crypto, deps = [ deno_webidl, deno_web ], @@ -118,13 +119,13 @@ deno_core::extension!(deno_crypto, #[op] pub fn op_crypto_base64url_decode( data: String, -) -> Result<ZeroCopyBuf, AnyError> { +) -> Result<ToJsBuffer, AnyError> { let data: Vec<u8> = base64::decode_config(data, base64::URL_SAFE_NO_PAD)?; Ok(data.into()) } #[op] -pub fn op_crypto_base64url_encode(data: ZeroCopyBuf) -> String { +pub fn op_crypto_base64url_encode(data: JsBuffer) -> String { let data: String = base64::encode_config(data, base64::URL_SAFE_NO_PAD); data } @@ -172,7 +173,7 @@ pub enum KeyType { #[serde(rename_all = "lowercase")] pub struct KeyData { r#type: KeyType, - data: ZeroCopyBuf, + data: JsBuffer, } #[derive(Deserialize)] @@ -188,8 +189,8 @@ pub struct SignArg { #[op] pub async fn op_crypto_sign_key( args: SignArg, - zero_copy: ZeroCopyBuf, -) -> Result<ZeroCopyBuf, AnyError> { + zero_copy: JsBuffer, +) -> Result<ToJsBuffer, AnyError> { let data = &*zero_copy; let algorithm = args.algorithm; @@ -297,14 +298,14 @@ pub struct VerifyArg { key: KeyData, algorithm: Algorithm, hash: Option<CryptoHash>, - signature: ZeroCopyBuf, + signature: JsBuffer, named_curve: Option<CryptoNamedCurve>, } #[op] pub async fn op_crypto_verify_key( args: VerifyArg, - zero_copy: ZeroCopyBuf, + zero_copy: JsBuffer, ) -> Result<bool, AnyError> { let data = &*zero_copy; let algorithm = args.algorithm; @@ -414,14 +415,14 @@ pub struct DeriveKeyArg { public_key: Option<KeyData>, named_curve: Option<CryptoNamedCurve>, // HKDF - info: Option<ZeroCopyBuf>, + info: Option<JsBuffer>, } #[op] pub async fn op_crypto_derive_bits( args: DeriveKeyArg, - zero_copy: Option<ZeroCopyBuf>, -) -> Result<ZeroCopyBuf, AnyError> { + zero_copy: Option<JsBuffer>, +) -> Result<ToJsBuffer, AnyError> { let algorithm = args.algorithm; match algorithm { Algorithm::Pbkdf2 => { @@ -601,8 +602,8 @@ pub fn op_crypto_random_uuid(state: &mut OpState) -> Result<String, AnyError> { #[op] pub async fn op_crypto_subtle_digest( algorithm: CryptoHash, - data: ZeroCopyBuf, -) -> Result<ZeroCopyBuf, AnyError> { + data: JsBuffer, +) -> Result<ToJsBuffer, AnyError> { let output = spawn_blocking(move || { digest::digest(algorithm.into(), &data) .as_ref() @@ -617,15 +618,15 @@ pub async fn op_crypto_subtle_digest( #[derive(Deserialize)] #[serde(rename_all = "camelCase")] pub struct WrapUnwrapKeyArg { - key: RawKeyData, + key: V8RawKeyData, algorithm: Algorithm, } #[op] pub fn op_crypto_wrap_key( args: WrapUnwrapKeyArg, - data: ZeroCopyBuf, -) -> Result<ZeroCopyBuf, AnyError> { + data: JsBuffer, +) -> Result<ToJsBuffer, AnyError> { let algorithm = args.algorithm; match algorithm { @@ -653,8 +654,8 @@ pub fn op_crypto_wrap_key( #[op] pub fn op_crypto_unwrap_key( args: WrapUnwrapKeyArg, - data: ZeroCopyBuf, -) -> Result<ZeroCopyBuf, AnyError> { + data: JsBuffer, +) -> Result<ToJsBuffer, AnyError> { let algorithm = args.algorithm; match algorithm { Algorithm::AesKw => { diff --git a/ext/crypto/shared.rs b/ext/crypto/shared.rs index 4ecb35dc2..109f51fa1 100644 --- a/ext/crypto/shared.rs +++ b/ext/crypto/shared.rs @@ -5,7 +5,8 @@ use std::borrow::Cow; use deno_core::error::custom_error; use deno_core::error::type_error; use deno_core::error::AnyError; -use deno_core::ZeroCopyBuf; +use deno_core::JsBuffer; +use deno_core::ToJsBuffer; use elliptic_curve::sec1::ToEncodedPoint; use rsa::pkcs1::DecodeRsaPrivateKey; use rsa::pkcs1::EncodeRsaPublicKey; @@ -46,19 +47,27 @@ pub enum EcNamedCurve { P521, } -#[derive(Serialize, Deserialize)] +#[derive(Deserialize)] #[serde(rename_all = "lowercase", tag = "type", content = "data")] -pub enum RawKeyData { - Secret(ZeroCopyBuf), - Private(ZeroCopyBuf), - Public(ZeroCopyBuf), +pub enum V8RawKeyData { + Secret(JsBuffer), + Private(JsBuffer), + Public(JsBuffer), } -impl RawKeyData { +#[derive(Serialize)] +#[serde(rename_all = "lowercase", tag = "type", content = "data")] +pub enum RustRawKeyData { + Secret(ToJsBuffer), + Private(ToJsBuffer), + Public(ToJsBuffer), +} + +impl V8RawKeyData { pub fn as_rsa_public_key(&self) -> Result<Cow<'_, [u8]>, AnyError> { match self { - RawKeyData::Public(data) => Ok(Cow::Borrowed(data)), - RawKeyData::Private(data) => { + V8RawKeyData::Public(data) => Ok(Cow::Borrowed(data)), + V8RawKeyData::Private(data) => { let private_key = RsaPrivateKey::from_pkcs1_der(data) .map_err(|_| type_error("expected valid private key"))?; @@ -75,55 +84,55 @@ impl RawKeyData { pub fn as_rsa_private_key(&self) -> Result<&[u8], AnyError> { match self { - RawKeyData::Private(data) => Ok(data), + V8RawKeyData::Private(data) => Ok(data), _ => Err(type_error("expected private key")), } } pub fn as_secret_key(&self) -> Result<&[u8], AnyError> { match self { - RawKeyData::Secret(data) => Ok(data), + V8RawKeyData::Secret(data) => Ok(data), _ => Err(type_error("expected secret key")), } } pub fn as_ec_public_key_p256(&self) -> Result<p256::EncodedPoint, AnyError> { match self { - RawKeyData::Public(data) => { + V8RawKeyData::Public(data) => { // public_key is a serialized EncodedPoint p256::EncodedPoint::from_bytes(data) .map_err(|_| type_error("expected valid public EC key")) } - RawKeyData::Private(data) => { + V8RawKeyData::Private(data) => { let signing_key = p256::SecretKey::from_pkcs8_der(data) .map_err(|_| type_error("expected valid private EC key"))?; Ok(signing_key.public_key().to_encoded_point(false)) } // Should never reach here. - RawKeyData::Secret(_) => unreachable!(), + V8RawKeyData::Secret(_) => unreachable!(), } } pub fn as_ec_public_key_p384(&self) -> Result<p384::EncodedPoint, AnyError> { match self { - RawKeyData::Public(data) => { + V8RawKeyData::Public(data) => { // public_key is a serialized EncodedPoint p384::EncodedPoint::from_bytes(data) .map_err(|_| type_error("expected valid public EC key")) } - RawKeyData::Private(data) => { + V8RawKeyData::Private(data) => { let signing_key = p384::SecretKey::from_pkcs8_der(data) .map_err(|_| type_error("expected valid private EC key"))?; Ok(signing_key.public_key().to_encoded_point(false)) } // Should never reach here. - RawKeyData::Secret(_) => unreachable!(), + V8RawKeyData::Secret(_) => unreachable!(), } } pub fn as_ec_private_key(&self) -> Result<&[u8], AnyError> { match self { - RawKeyData::Private(data) => Ok(data), + V8RawKeyData::Private(data) => Ok(data), _ => Err(type_error("expected private key")), } } diff --git a/ext/crypto/x25519.rs b/ext/crypto/x25519.rs index 99914e14e..77554129e 100644 --- a/ext/crypto/x25519.rs +++ b/ext/crypto/x25519.rs @@ -3,7 +3,7 @@ use curve25519_dalek::montgomery::MontgomeryPoint; use deno_core::error::AnyError; use deno_core::op; -use deno_core::ZeroCopyBuf; +use deno_core::ToJsBuffer; use elliptic_curve::pkcs8::PrivateKeyInfo; use elliptic_curve::subtle::ConstantTimeEq; use rand::rngs::OsRng; @@ -101,7 +101,7 @@ pub fn op_crypto_import_pkcs8_x25519(key_data: &[u8], out: &mut [u8]) -> bool { #[op] pub fn op_crypto_export_spki_x25519( pubkey: &[u8], -) -> Result<ZeroCopyBuf, AnyError> { +) -> Result<ToJsBuffer, AnyError> { let key_info = spki::SubjectPublicKeyInfo { algorithm: spki::AlgorithmIdentifier { // id-X25519 @@ -116,7 +116,7 @@ pub fn op_crypto_export_spki_x25519( #[op] pub fn op_crypto_export_pkcs8_x25519( pkey: &[u8], -) -> Result<ZeroCopyBuf, AnyError> { +) -> Result<ToJsBuffer, AnyError> { // This should probably use OneAsymmetricKey instead let pk_info = rsa::pkcs8::PrivateKeyInfo { public_key: None, |