From bb791cd14e850928d3c4d41b59347a7359825353 Mon Sep 17 00:00:00 2001 From: core Date: Sun, 7 Jan 2024 01:17:55 -0500 Subject: [PATCH] maybe fix savefiles --- savefile_decoder/src/main.rs | 2 +- starkingdoms-common/src/lib.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/savefile_decoder/src/main.rs b/savefile_decoder/src/main.rs index 1d46608b23b6bc1812c329c9eeb81eea6c00f26c..760a7148e50a579e7511f270eb7d97e8495fba1c 100644 --- a/savefile_decoder/src/main.rs +++ b/savefile_decoder/src/main.rs @@ -3,7 +3,7 @@ use std::fs; use starkingdoms_common::unpack_savefile; fn main() { - let save = std::env::args().next(); + let save = std::env::args().next().unwrap(); let key = fs::read_to_string("/etc/starkingdoms/app_key").unwrap(); let save_data = unpack_savefile(&key, save).unwrap(); println!("{:#?}", save_data); diff --git a/starkingdoms-common/src/lib.rs b/starkingdoms-common/src/lib.rs index 55340eb9930bf8d117bb8f7220e7f8c056d73ea5..26ff1cbadb2f096a3d9371b62fad47c2286449d1 100644 --- a/starkingdoms-common/src/lib.rs +++ b/starkingdoms-common/src/lib.rs @@ -56,15 +56,15 @@ pub fn pack_savefile(key: &str, save_data: SaveData) -> String { } pub fn unpack_savefile(key: &str, file: String) -> Result> { // << reverse! << - let savefile_bytes = base64::engine::general_purpose::STANDARD.decode(file)?; + let savefile_bytes = base64::engine::general_purpose::STANDARD.decode(file).map_err(|e| format!("error decoding b64: {e}"))?; - let save_file: Savefile = rmp_serde::from_slice(&savefile_bytes)?; + let save_file: Savefile = rmp_serde::from_slice(&savefile_bytes).map_err(|e| format!("error decoding savefile wrapper: {e}"))?; - let mut mac: Hmac = Hmac::new_from_slice(key.as_bytes()).unwrap(); + let mut mac: Hmac = Hmac::new_from_slice(key.as_bytes()).map_err(|e| format!("error loading hmac-sha256: {e}")); mac.update(&save_file.data_msgpack); - mac.verify_slice(&save_file.mac)?; + mac.verify_slice(&save_file.mac).map_err(|e| format!("error verifying signature: {e}"))?; - let save_data = rmp_serde::from_slice(&save_file.data_msgpack)?; + let save_data = rmp_serde::from_slice(&save_file.data_msgpack).map_err(|e| format!("error decoding inner signature: {e}"))?; Ok(save_data) }