From f396703a0ca809ce6200d7cb009a9bc83dd6683a Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Mon, 15 Jan 2024 18:23:43 +0100 Subject: openpgp: Simplify Parse implementations by using the macro. --- openpgp/src/parse.rs | 53 ++++++++++++++++++++-------------------------------- 1 file changed, 20 insertions(+), 33 deletions(-) (limited to 'openpgp') diff --git a/openpgp/src/parse.rs b/openpgp/src/parse.rs index 4e18acee..1ecf63b2 100644 --- a/openpgp/src/parse.rs +++ b/openpgp/src/parse.rs @@ -1099,15 +1099,12 @@ impl S2K { } } -impl<'a> Parse<'a, S2K> for S2K { - /// Reads an S2K from `reader`. - fn from_reader(reader: R) -> Result { - let bio = buffered_reader::Generic::with_cookie( - reader, None, Cookie::default()); +impl_parse_with_buffered_reader!( + S2K, + |bio: Box>| -> Result { let mut parser = PacketHeaderParser::new_naked(bio.into_boxed()); Self::parse_v4(&mut parser) - } -} + }); impl Header { pub(crate) fn parse, C: fmt::Debug + Send + Sync> (bio: &mut R) @@ -1123,18 +1120,11 @@ impl Header { } } -impl<'a> Parse<'a, Header> for Header { - /// Parses an OpenPGP packet's header as described in [Section 4.2 - /// of RFC 4880]. - /// - /// [Section 4.2 of RFC 4880]: https://tools.ietf.org/html/rfc4880#section-4.2 - fn from_reader(reader: R) -> Result - { - let mut reader = buffered_reader::Generic::with_cookie( - reader, None, Cookie::default()); +impl_parse_with_buffered_reader!( + Header, + |mut reader| -> Result { Header::parse(&mut reader) - } -} + }); impl BodyLength { /// Decodes a new format body length as described in [Section @@ -2209,8 +2199,9 @@ fn one_pass_sig_parser_test () { } } -impl<'a> Parse<'a, OnePassSig3> for OnePassSig3 { - fn from_reader(reader: R) -> Result { +impl_parse_with_buffered_reader!( + OnePassSig3, + |reader| -> Result { OnePassSig::from_reader(reader).map(|p| match p { OnePassSig::V3(p) => p, // XXX: Once we have a second variant. @@ -2218,8 +2209,7 @@ impl<'a> Parse<'a, OnePassSig3> for OnePassSig3 { // p => Err(Error::InvalidOperation( // format!("Not a OnePassSig::V3 packet: {:?}", p)).into()), }) - } -} + }); #[test] fn one_pass_sig_test () { @@ -3169,15 +3159,12 @@ impl MPI { } } -impl<'a> Parse<'a, MPI> for MPI { - // Reads an MPI from `reader`. - fn from_reader(reader: R) -> Result { - let bio = buffered_reader::Generic::with_cookie( - reader, None, Cookie::default()); +impl_parse_with_buffered_reader!( + MPI, + |bio: Box>| -> Result { let mut parser = PacketHeaderParser::new_naked(bio.into_boxed()); Self::parse("(none_len)", "(none)", &mut parser) - } -} + }); impl ProtectedMPI { /// Parses an OpenPGP MPI containing secrets. @@ -3223,8 +3210,9 @@ impl PKESK3 { } } -impl<'a> Parse<'a, PKESK3> for PKESK3 { - fn from_reader(reader: R) -> Result { +impl_parse_with_buffered_reader!( + PKESK3, + |reader| -> Result { PKESK::from_reader(reader).map(|p| match p { PKESK::V3(p) => p, // XXX: Once we have a second variant. @@ -3232,8 +3220,7 @@ impl<'a> Parse<'a, PKESK3> for PKESK3 { // p => Err(Error::InvalidOperation( // format!("Not a PKESKv3 packet: {:?}", p)).into()), }) - } -} + }); impl<'a> Parse<'a, Packet> for Packet { fn from_reader(reader: R) -> Result { -- cgit v1.2.3