diff --git a/core/Cargo.toml b/core/Cargo.toml index 2b4f6d5..cc6191b 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -13,6 +13,7 @@ jsonwebtoken = "8.1.1" dotenv = "0.15.0" tokio = "1.21.2" futures = "0.3.25" +async-compat = "0.2.1" # crypto argon2 = { version = "0.4", features = ["std"] } diff --git a/core/src/crypto.rs b/core/src/crypto.rs index bacc3fe..68a5e38 100644 --- a/core/src/crypto.rs +++ b/core/src/crypto.rs @@ -1,6 +1,7 @@ use argon2::{ Argon2, PasswordHasher as ArgonPasswordHasher, PasswordVerifier as ArgonPasswordVerifier, }; +use async_compat::CompatExt; use secrecy::ExposeSecret; use futures::io::{AsyncReadExt, AsyncWriteExt}; use rand::Rng; @@ -195,8 +196,7 @@ pub async fn encrypt_file_with_recipients( tokio::io::AsyncReadExt::read_to_end(&mut plain_file, &mut plain_file_contents).await?; - let mut encrypt_buffer = Vec::new(); - let mut encrypt_writer = encryptor.wrap_async_output(&mut encrypt_buffer).await?; + let mut encrypt_writer = encryptor.wrap_async_output(cipher_file.compat_mut()).await?; encrypt_writer.write_all(&plain_file_contents).await?; @@ -204,8 +204,6 @@ pub async fn encrypt_file_with_recipients( encrypt_writer.close().await?; - tokio::io::AsyncWriteExt::write_all(&mut cipher_file, &encrypt_buffer).await?; - return Ok(()); } else { // TODO: Error handling