Report decryption error

This commit is contained in:
Hanh 2022-12-25 05:04:42 +08:00
parent a59d4c74dc
commit 893e52fe20
3 changed files with 7 additions and 6 deletions

View File

@ -161,7 +161,7 @@ struct CResult_____c_char generate_key(void);
struct CResult_u8 zip_backup(char *key, char *dst_dir); struct CResult_u8 zip_backup(char *key, char *dst_dir);
void unzip_backup(char *key, char *data_path, char *dst_dir); struct CResult_u8 unzip_backup(char *key, char *data_path, char *dst_dir);
struct CResult_____c_char split_data(uint32_t id, char *data); struct CResult_____c_char split_data(uint32_t id, char *data);

View File

@ -682,16 +682,16 @@ pub unsafe extern "C" fn unzip_backup(
key: *mut c_char, key: *mut c_char,
data_path: *mut c_char, data_path: *mut c_char,
dst_dir: *mut c_char, dst_dir: *mut c_char,
) { ) -> CResult<u8> {
from_c_str!(key); from_c_str!(key);
from_c_str!(data_path); from_c_str!(data_path);
from_c_str!(dst_dir); from_c_str!(dst_dir);
let res = || { let res = || {
let backup = FullEncryptedBackup::new(&dst_dir); let backup = FullEncryptedBackup::new(&dst_dir);
backup.restore(&key, &data_path)?; backup.restore(&key, &data_path)?;
Ok(()) Ok(0)
}; };
log_error(res()) to_cresult(res())
} }
#[no_mangle] #[no_mangle]

View File

@ -60,13 +60,14 @@ impl FullEncryptedBackup {
let mut f = File::open(data_path)?; let mut f = File::open(data_path)?;
f.read_to_end(&mut cipher_text)?; f.read_to_end(&mut cipher_text)?;
let decryptor = match age::Decryptor::new(&*cipher_text)? { let decryptor = match age::Decryptor::new(&*cipher_text).map_err(|_| anyhow!("Decryption Error"))? {
age::Decryptor::Recipients(d) => d, age::Decryptor::Recipients(d) => d,
_ => unreachable!(), _ => unreachable!(),
}; };
let mut plain_text = vec![]; let mut plain_text = vec![];
let mut reader = decryptor.decrypt(iter::once(&key as &dyn age::Identity))?; let mut reader = decryptor.decrypt(iter::once(&key as &dyn age::Identity))
.map_err(|_| anyhow!("Decryption Error"))?;
reader.read_to_end(&mut plain_text)?; reader.read_to_end(&mut plain_text)?;
self.unzip(&plain_text)?; self.unzip(&plain_text)?;