From 86bda990a425c93950714e7e36e14f4308a593f0 Mon Sep 17 00:00:00 2001 From: Wiktor Kwapisiewicz Date: Wed, 1 Apr 2020 16:08:52 +0200 Subject: openpgp: Convert `Message::from_packets` to `TryFrom>` --- openpgp/src/message/mod.rs | 74 ++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/openpgp/src/message/mod.rs b/openpgp/src/message/mod.rs index 975b8efd..dd25fb4a 100644 --- a/openpgp/src/message/mod.rs +++ b/openpgp/src/message/mod.rs @@ -373,15 +373,6 @@ impl std::str::FromStr for Message { } impl Message { - /// Converts the vector of `Packets` to a `Message`. - /// - /// See [`Message::try_from`] for more details. - /// - /// [`Message::try_from`]: #method.try_from - pub fn from_packets(packets: Vec) -> Result { - Self::try_from(PacketPile::from(packets)) - } - /// Returns the body of the message. /// /// Returns `None` if no literal data packet is found. This @@ -454,6 +445,19 @@ impl TryFrom for Message { } } +impl TryFrom> for Message { + type Error = anyhow::Error; + + /// Converts the vector of `Packets` to a `Message`. + /// + /// See [`Message::try_from`] for more details. + /// + /// [`Message::try_from`]: #method.try_from + fn try_from(packets: Vec) -> Result { + Self::try_from(PacketPile::from(packets)) + } +} + impl From for PacketPile { fn from(m: Message) -> Self { m.pile @@ -752,7 +756,7 @@ mod tests { fn basic() { // Empty. // => bad. - let message = Message::from_packets(vec![]); + let message = Message::try_from(vec![]); assert!(message.is_err(), "{:?}", message); // 0: Literal @@ -762,7 +766,7 @@ mod tests { lit.set_body(b"data".to_vec()); packets.push(lit.into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); } @@ -780,7 +784,7 @@ mod tests { .push(lit.clone().into()) .into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); // 0: CompressedData @@ -794,7 +798,7 @@ mod tests { .push(lit.clone().into()) .into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_err(), "{:?}", message); // 0: CompressedData @@ -808,7 +812,7 @@ mod tests { .into()); packets.push(lit.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_err(), "{:?}", message); // 0: CompressedData @@ -824,7 +828,7 @@ mod tests { .into()) .into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); } @@ -846,7 +850,7 @@ mod tests { let mut packets : Vec = Vec::new(); packets.push(OnePassSig3::new(SignatureType::Binary).into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_err(), "{:?}", message); // 0: OnePassSig @@ -856,7 +860,7 @@ mod tests { packets.push(OnePassSig3::new(SignatureType::Binary).into()); packets.push(lit.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_err(), "{:?}", message); // 0: OnePassSig @@ -868,7 +872,7 @@ mod tests { packets.push(lit.clone().into()); packets.push(sig.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); // 0: OnePassSig @@ -882,7 +886,7 @@ mod tests { packets.push(sig.clone().into()); packets.push(sig.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_err(), "{:?}", message); // 0: OnePassSig @@ -898,7 +902,7 @@ mod tests { packets.push(sig.clone().into()); packets.push(sig.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); // 0: OnePassSig @@ -916,7 +920,7 @@ mod tests { packets.push(sig.clone().into()); packets.push(sig.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_err(), "{:?}", message); // 0: OnePassSig @@ -936,7 +940,7 @@ mod tests { packets.push(sig.clone().into()); packets.push(sig.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); } @@ -958,7 +962,7 @@ mod tests { let mut packets : Vec = Vec::new(); packets.push(sig.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_err(), "{:?}", message); // 0: Signature @@ -968,7 +972,7 @@ mod tests { packets.push(sig.clone().into()); packets.push(lit.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); // 0: Signature @@ -980,7 +984,7 @@ mod tests { packets.push(sig.clone().into()); packets.push(lit.clone().into()); - let message = Message::from_packets(packets); + let message = Message::try_from(packets); assert!(message.is_ok(), "{:?}", message); } @@ -1004,7 +1008,7 @@ mod tests { S2K::Simple { hash: HashAlgorithm::SHA256 }, &sk, &"12345678".into()).unwrap().into()); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_err(), "{:?}", message); // 0: SK-ESK @@ -1015,7 +1019,7 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::Literal ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_err(), "{:?}", message); // 0: SK-ESK @@ -1033,7 +1037,7 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::SEIP ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_ok(), "{:#?}", message); // 0: SK-ESK @@ -1048,7 +1052,7 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::SEIP, Tag::SKESK ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_err(), "{:#?}", message); // 0: SK-ESK @@ -1062,7 +1066,7 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::SKESK, Tag::SEIP ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_ok(), "{:#?}", message); // 0: SK-ESK @@ -1080,7 +1084,7 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::SKESK, Tag::SEIP, Tag::SEIP ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_err(), "{:#?}", message); // 0: SK-ESK @@ -1095,7 +1099,7 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::SKESK, Tag::SEIP, Tag::Literal ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_err(), "{:#?}", message); // 0: SK-ESK @@ -1112,7 +1116,7 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::SKESK, Tag::SEIP ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_err(), "{:#?}", message); // 0: SK-ESK @@ -1135,13 +1139,13 @@ mod tests { assert!(packets.iter().map(|p| p.tag()).collect::>() == [ Tag::SKESK, Tag::PKESK, Tag::SKESK, Tag::SEIP ]); - let message = Message::from_packets(packets.clone()); + let message = Message::try_from(packets.clone()); assert!(message.is_ok(), "{:#?}", message); } #[test] fn message_is_send_and_sync() { fn f(_: T) {} - f(Message::from_packets(vec![])); + f(Message::try_from(vec![])); } } -- cgit v1.2.3