use libsignify::{Codeable, PublicKey, Signature};
use std::{fs, path::Path};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("verifying signature of message file");
let base_path = if std::env::var("CARGO_CRATE_NAME").is_ok() {
Path::new("./examples/")
} else {
Path::new("./libsignify/examples/")
};
let message = fs::read(base_path.join("message.txt"))?;
let (signer_id, _) = {
let public_key_contents = fs::read_to_string(base_path.join("test_key.pub"))?;
PublicKey::from_base64(&public_key_contents)?
};
let (signature, _) = {
let signature_contents = fs::read_to_string(base_path.join("message.txt.sig"))?;
Signature::from_base64(&signature_contents)?
};
match signer_id.verify(&message, &signature) {
Ok(()) => {
println!("message was verified!");
Ok(())
}
Err(e) => {
eprintln!("message did not verify: {}", e);
Err(Box::new(e))
}
}
}