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);
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);

View File

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

View File

@ -60,13 +60,14 @@ impl FullEncryptedBackup {
let mut f = File::open(data_path)?;
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,
_ => unreachable!(),
};
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)?;
self.unzip(&plain_text)?;