ksud: use sha1 library to calc hash
This commit is contained in:
1
userspace/ksud/Cargo.lock
generated
1
userspace/ksud/Cargo.lock
generated
@@ -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",
|
||||||
|
|||||||
@@ -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" }
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user