diff options
-rw-r--r-- | openpgp/src/packet/key.rs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/openpgp/src/packet/key.rs b/openpgp/src/packet/key.rs index a6079f40..a95facad 100644 --- a/openpgp/src/packet/key.rs +++ b/openpgp/src/packet/key.rs @@ -1900,8 +1900,31 @@ mod tests { } } + quickcheck! { + fn roundtrip_public(p: Key<PublicParts, UnspecifiedRole>) -> bool { + use crate::parse::Parse; + use crate::serialize::MarshalInto; + let buf = p.to_vec().expect("Failed to serialize key"); + let q = Key::from_bytes(&buf).expect("Failed to parse key").into(); + assert_eq!(p, q); + true + } + } + + quickcheck! { + fn roundtrip_secret(p: Key<SecretParts, UnspecifiedRole>) -> bool { + use crate::parse::Parse; + use crate::serialize::MarshalInto; + let buf = p.to_vec().expect("Failed to serialize key"); + let q = Key::from_bytes(&buf).expect("Failed to parse key") + .parts_into_secret().expect("No secret material"); + assert_eq!(p, q); + true + } + } + #[test] - fn roundtrip() { + fn generate_roundtrip() { use crate::types::Curve::*; let keys = vec![NistP256, NistP384, NistP521].into_iter().flat_map(|cv| |