diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-06-20 16:53:57 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-20 16:53:57 +0530 |
commit | 4cbb2567b502445ef6c13acac64b5f93218db4ba (patch) | |
tree | 2431ef7490cbcbf54828c848c0dbedbf1aeff773 /ext/crypto/encrypt.rs | |
parent | 3d6fa64f19e74924813ece5e5fbd53023342bac8 (diff) |
chore(ext/crypto): update webcrypto deps (#14452)
Diffstat (limited to 'ext/crypto/encrypt.rs')
-rw-r--r-- | ext/crypto/encrypt.rs | 72 |
1 files changed, 33 insertions, 39 deletions
diff --git a/ext/crypto/encrypt.rs b/ext/crypto/encrypt.rs index 9d0dd3565..ffa441c0f 100644 --- a/ext/crypto/encrypt.rs +++ b/ext/crypto/encrypt.rs @@ -1,8 +1,9 @@ use crate::shared::*; -use aes::cipher::NewCipher; -use aes::BlockEncrypt; -use aes::NewBlockCipher; +use aes::cipher::block_padding::Pkcs7; +use aes::cipher::BlockEncryptMut; +use aes::cipher::KeyIvInit; +use aes::cipher::StreamCipher; use aes_gcm::aead::generic_array::typenum::U12; use aes_gcm::aead::generic_array::typenum::U16; use aes_gcm::aead::generic_array::ArrayLength; @@ -12,21 +13,15 @@ use aes_gcm::aes::Aes256; use aes_gcm::AeadInPlace; use aes_gcm::NewAead; use aes_gcm::Nonce; -use ctr::Ctr; -use deno_core::op; - -use block_modes::BlockMode; -use ctr::cipher::StreamCipher; -use ctr::flavors::Ctr128BE; - -use ctr::flavors::Ctr32BE; -use ctr::flavors::Ctr64BE; -use ctr::flavors::CtrFlavor; +use ctr::Ctr128BE; +use ctr::Ctr32BE; +use ctr::Ctr64BE; use deno_core::error::type_error; use deno_core::error::AnyError; +use deno_core::op; use deno_core::ZeroCopyBuf; use rand::rngs::OsRng; -use rsa::pkcs1::FromRsaPublicKey; +use rsa::pkcs1::DecodeRsaPublicKey; use rsa::PaddingScheme; use rsa::PublicKey; use serde::Deserialize; @@ -156,27 +151,27 @@ fn encrypt_aes_cbc( let ciphertext = match length { 128 => { // Section 10.3 Step 2 of RFC 2315 https://www.rfc-editor.org/rfc/rfc2315 - type Aes128Cbc = - block_modes::Cbc<aes::Aes128, block_modes::block_padding::Pkcs7>; + type Aes128CbcEnc = cbc::Encryptor<aes::Aes128>; - let cipher = Aes128Cbc::new_from_slices(key, &iv)?; - cipher.encrypt_vec(data) + let cipher = Aes128CbcEnc::new_from_slices(key, &iv) + .map_err(|_| operation_error("invalid key or iv".to_string()))?; + cipher.encrypt_padded_vec_mut::<Pkcs7>(data) } 192 => { // Section 10.3 Step 2 of RFC 2315 https://www.rfc-editor.org/rfc/rfc2315 - type Aes192Cbc = - block_modes::Cbc<aes::Aes192, block_modes::block_padding::Pkcs7>; + type Aes192CbcEnc = cbc::Encryptor<aes::Aes192>; - let cipher = Aes192Cbc::new_from_slices(key, &iv)?; - cipher.encrypt_vec(data) + let cipher = Aes192CbcEnc::new_from_slices(key, &iv) + .map_err(|_| operation_error("invalid key or iv".to_string()))?; + cipher.encrypt_padded_vec_mut::<Pkcs7>(data) } 256 => { // Section 10.3 Step 2 of RFC 2315 https://www.rfc-editor.org/rfc/rfc2315 - type Aes256Cbc = - block_modes::Cbc<aes::Aes256, block_modes::block_padding::Pkcs7>; + type Aes256CbcEnc = cbc::Encryptor<aes::Aes256>; - let cipher = Aes256Cbc::new_from_slices(key, &iv)?; - cipher.encrypt_vec(data) + let cipher = Aes256CbcEnc::new_from_slices(key, &iv) + .map_err(|_| operation_error("invalid key or iv".to_string()))?; + cipher.encrypt_padded_vec_mut::<Pkcs7>(data) } _ => return Err(type_error("invalid length")), }; @@ -260,16 +255,15 @@ fn encrypt_aes_gcm( Ok(ciphertext) } -fn encrypt_aes_ctr_gen<B, F>( +fn encrypt_aes_ctr_gen<B>( key: &[u8], counter: &[u8], data: &[u8], ) -> Result<Vec<u8>, AnyError> where - B: BlockEncrypt + NewBlockCipher, - F: CtrFlavor<B::BlockSize>, + B: KeyIvInit + StreamCipher, { - let mut cipher = Ctr::<B, F>::new(key.into(), counter.into()); + let mut cipher = B::new(key.into(), counter.into()); let mut ciphertext = data.to_vec(); cipher @@ -290,21 +284,21 @@ fn encrypt_aes_ctr( match ctr_length { 32 => match key_length { - 128 => encrypt_aes_ctr_gen::<aes::Aes128, Ctr32BE>(key, counter, data), - 192 => encrypt_aes_ctr_gen::<aes::Aes192, Ctr32BE>(key, counter, data), - 256 => encrypt_aes_ctr_gen::<aes::Aes256, Ctr32BE>(key, counter, data), + 128 => encrypt_aes_ctr_gen::<Ctr32BE<aes::Aes128>>(key, counter, data), + 192 => encrypt_aes_ctr_gen::<Ctr32BE<aes::Aes192>>(key, counter, data), + 256 => encrypt_aes_ctr_gen::<Ctr32BE<aes::Aes256>>(key, counter, data), _ => Err(type_error("invalid length")), }, 64 => match key_length { - 128 => encrypt_aes_ctr_gen::<aes::Aes128, Ctr64BE>(key, counter, data), - 192 => encrypt_aes_ctr_gen::<aes::Aes192, Ctr64BE>(key, counter, data), - 256 => encrypt_aes_ctr_gen::<aes::Aes256, Ctr64BE>(key, counter, data), + 128 => encrypt_aes_ctr_gen::<Ctr64BE<aes::Aes128>>(key, counter, data), + 192 => encrypt_aes_ctr_gen::<Ctr64BE<aes::Aes192>>(key, counter, data), + 256 => encrypt_aes_ctr_gen::<Ctr64BE<aes::Aes256>>(key, counter, data), _ => Err(type_error("invalid length")), }, 128 => match key_length { - 128 => encrypt_aes_ctr_gen::<aes::Aes128, Ctr128BE>(key, counter, data), - 192 => encrypt_aes_ctr_gen::<aes::Aes192, Ctr128BE>(key, counter, data), - 256 => encrypt_aes_ctr_gen::<aes::Aes256, Ctr128BE>(key, counter, data), + 128 => encrypt_aes_ctr_gen::<Ctr128BE<aes::Aes128>>(key, counter, data), + 192 => encrypt_aes_ctr_gen::<Ctr128BE<aes::Aes192>>(key, counter, data), + 256 => encrypt_aes_ctr_gen::<Ctr128BE<aes::Aes256>>(key, counter, data), _ => Err(type_error("invalid length")), }, _ => Err(type_error( |