ksud: use sha1 library to calc hash

This commit is contained in:
weishu
2024-04-24 12:51:11 +08:00
parent ac4c6f7895
commit 063d5c8025
3 changed files with 21 additions and 12 deletions

View File

@@ -435,20 +435,27 @@ fn do_patch(
Ok(())
}
#[cfg(target_os = "android")]
fn calculate_sha1(file_path: impl AsRef<Path>) -> io::Result<String> {
let mut file = File::open(file_path.as_ref())?;
let mut hasher = Sha1::new();
let mut buffer = [0; 1024];
loop {
let n = file.read(&mut buffer)?;
if n == 0 {
break;
}
hasher.update(&buffer[..n]);
}
let result = hasher.finalize();
Ok(format!("{:x}", result))
}
#[cfg(target_os = "android")]
fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> {
// calc boot sha1
let output = Command::new(magiskboot)
.current_dir(workdir)
.arg("sha1")
.arg(image)
.output()?;
ensure!(
output.status.success(),
"Cannot calculate sha1 of original boot!"
);
let output = String::from_utf8(output.stdout)?;
let sha1 = output.trim();
let sha1 = calculate_sha1(image)?;
let filename = format!("{KSU_BACKUP_FILE_PREFIX}{sha1}");
println!("- Backup stock boot image");