use signalscreen_checker::analyze;
#[test]
fn unsigned_file_grades_f() {
let data = std::fs::read("fixtures/unsigned.exe").unwrap();
let r = analyze("unsigned.exe", &data, 0).unwrap();
assert_eq!(r.grade, 'F');
assert!(!r.signature.present);
}
#[test]
fn selfsigned_no_timestamp_is_penalized() {
let data = std::fs::read("fixtures/selfsigned-sha256.exe").unwrap();
let r = analyze("selfsigned-sha256.exe", &data, 0).unwrap();
assert!(r.signature.present);
assert_eq!(r.signature.digest_algo, "SHA-256");
assert!(r.score <= 60, "score was {}", r.score);
assert!(r.checks.iter().any(|c| c.id == "chain"));
let cert = r.certificate.expect("cert summary");
assert_eq!(cert.subject_o.as_deref(), Some("SignalScreen Test"));
}
#[test]
fn intact_signed_file_reports_a_verified_image_hash() {
let data = std::fs::read("fixtures/selfsigned-sha256.exe").unwrap();
let r = analyze("selfsigned-sha256.exe", &data, 0).unwrap();
assert_eq!(r.signature.image_hash, "verified");
let sig = r.checks.iter().find(|c| c.id == "signature").unwrap();
assert_eq!(format!("{:?}", sig.status), "Pass");
}
#[test]
fn tampered_signed_file_grades_f() {
let mut data = std::fs::read("fixtures/selfsigned-sha256.exe").unwrap();
data[2] ^= 0xff;
let r = analyze("tampered.exe", &data, 0).unwrap();
assert_eq!(r.grade, 'F');
assert_eq!(r.signature.image_hash, "mismatch");
assert!(!r.signature.valid);
let sig = r.checks.iter().find(|c| c.id == "signature").unwrap();
assert_eq!(format!("{:?}", sig.status), "Fail");
}