use std::io::{Cursor, Read};
use buffer_redux::BufReader;
use pgp::{
armor::Dearmor,
composed::{Deserializable, SignedPublicKey},
};
#[test]
fn dearmor_fuzz_1() {
let input = std::fs::read("tests/unit-tests/dearmor_fuzz_1").unwrap();
let mut dearmor = Dearmor::new(BufReader::new(&input[..]));
let mut bytes = Vec::new();
let res = dearmor.read_to_end(&mut bytes);
assert!(res.is_err());
}
#[test]
fn armor_polyglot() {
let polyglot = std::fs::read_to_string("tests/unit-tests/polyglot.armor").unwrap();
let mut dearmor = Dearmor::new(BufReader::new(polyglot.as_bytes()));
let mut bytes = Vec::new();
dearmor.read_to_end(&mut bytes).expect("dearmor");
assert_eq!(bytes.len(), 15036);
let string = String::from_utf8_lossy(&bytes);
assert!(string.contains("hello sq"));
assert!(string.contains("PGP"));
}
#[test]
fn test_parse_armor_missing_end_marker() {
let c = Cursor::new(
"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\
Version: GnuPG v1\n",
);
let res = SignedPublicKey::from_armor_single(c);
assert!(res.is_err());
}