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

@@ -814,6 +814,7 @@ dependencies = [
"rustix 0.38.30", "rustix 0.38.30",
"serde", "serde",
"serde_json", "serde_json",
"sha1",
"sha256", "sha256",
"tempdir", "tempdir",
"which", "which",

View File

@@ -34,6 +34,7 @@ rust-embed = { version = "8", features = [
which = "6" which = "6"
getopts = "0.2" getopts = "0.2"
sha256 = "1" sha256 = "1"
sha1 = "0.10"
tempdir = "0.3" tempdir = "0.3"
chrono = "0.4" chrono = "0.4"
hole-punch = { git = "https://github.com/tiann/hole-punch" } hole-punch = { git = "https://github.com/tiann/hole-punch" }

View File

@@ -435,20 +435,27 @@ fn do_patch(
Ok(()) 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")] #[cfg(target_os = "android")]
fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> { fn do_backup(magiskboot: &Path, workdir: &Path, image: &str) -> Result<()> {
// calc boot sha1 let sha1 = calculate_sha1(image)?;
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 filename = format!("{KSU_BACKUP_FILE_PREFIX}{sha1}"); let filename = format!("{KSU_BACKUP_FILE_PREFIX}{sha1}");
println!("- Backup stock boot image"); println!("- Backup stock boot image");