// Example: parse a signed security.txt document and summarize it. Reports SignedUnverified, never verified.
///|
fn main {
let input = "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\n" +
"# Our security contact page\nContact: mailto:security@example.com\n" +
"Contact: https://example.com/security-contact\nEncryption: https://example.com/pgp-key.txt\n" +
"Expires: 2027-01-01T00:00:00Z\nX-Vendor: example\n" +
"-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEfake-signature-block\n=\n-----END PGP SIGNATURE-----\n"
match @lib.parse_security_txt(input) {
Ok(document) => {
println("fields: \{document.field_count()}")
println("standard fields: \{document.standard_field_count()}")
println("extension fields: \{document.extension_field_count()}")
println("contacts: \{document.contacts().length()}")
println("comments: \{document.comments().length()}")
println("signed: \{document.is_signed()}")
println("signature state: SignedUnverified (never 'verified')")
println("armor headers: \{document.armor_headers().length()}")
match document.preferred_contact() {
Some(uri) => println("preferred contact: \{uri}")
None => println("preferred contact: none")
}
println("--- serialized round-trip ---")
let text = @lib.serialize_security_txt(document) // Serialized output ends with a newline; trim it for println.
let trimmed = if text.has_suffix("\n") {
text[0:text.length() - 1].to_owned()
} else {
text
}
println(trimmed)
}
Err(err) => println("parse failed: \{err.to_string()}")
}
}