Report decryption error
This commit is contained in:
parent
a59d4c74dc
commit
893e52fe20
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
Loading…
Reference in New Issue