use std::fs;
use std::path::Path;
use sha2::{Sha256, Digest};
pub fn check_vaultseal_for_hash(vault_path: &str) -> Result<bool, String> {
let path = Path::new(vault_path);
let contents = fs::read(path)
.map_err(|e| format!("โ Failed to read vault file: {e}"))?;
let vault_hash_hex = {
let mut hasher = Sha256::new();
hasher.update(&contents);
hex::encode(hasher.finalize())
};
let seal_file = Path::new(".vaultseal");
if !seal_file.exists() {
return Err("โ .vaultseal registry not found.".into());
}
let seal_contents = fs::read_to_string(seal_file)
.map_err(|e| format!("โ Failed to read .vaultseal file: {e}"))?;
for line in seal_contents.lines() {
let parts: Vec<&str> = line.split(',').collect();
if parts.len() != 3 {
continue;
}
let registered_path = parts[0].trim();
let registered_hash = parts[2].trim();
if registered_path == vault_path {
let is_match = registered_hash == vault_hash_hex;
return Ok(is_match);
}
}
Err("โ Vault path not found in .vaultseal registry.".into())
}