signet 0.0.1

code signing tool
Documentation
use anyhow::Result;
use ssh_key::{HashAlg, SshSig};
use crate::{Signet, System};
use crate::args::Verify;
use crate::persist::read;

pub fn verify<S: System>(signet: &Signet<S>, args: Verify) -> Result<()> {
    let Verify { sig, ns, data } = args;

    let msg = read::<S>(&data)?;
    let sig = read::<S>(&sig.into())?;
    let sig = SshSig::from_pem(sig)?;

    let fp  = sig.public_key().fingerprint(HashAlg::Sha256);
    let key = hex::encode(fp);
    let key = signet.find(&key)?;

    key.public_key().verify(&ns, &msg, &sig)?;

    println!("good signature from {fp}");

    Ok(())
}