diff options
Diffstat (limited to 'openpgp/src/cert/raw.rs')
-rw-r--r-- | openpgp/src/cert/raw.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/openpgp/src/cert/raw.rs b/openpgp/src/cert/raw.rs index e9610818..bd981c24 100644 --- a/openpgp/src/cert/raw.rs +++ b/openpgp/src/cert/raw.rs @@ -459,8 +459,11 @@ impl<'a> Parse<'a, RawCert<'a>> for RawCert<'a> { /// Returns the first RawCert encountered in the reader. /// /// Returns an error if there are multiple certificates. - fn from_reader<R: 'a + Read + Send + Sync>(reader: R) -> Result<Self> { - let mut parser = RawCertParser::from_reader(reader)?; + fn from_buffered_reader<R>(reader: R) -> Result<RawCert<'a>> + where + R: BufferedReader<Cookie> + 'a + { + let mut parser = RawCertParser::from_buffered_reader(reader)?; if let Some(cert_result) = parser.next() { if parser.next().is_some() { Err(Error::MalformedCert( @@ -473,6 +476,14 @@ impl<'a> Parse<'a, RawCert<'a>> for RawCert<'a> { Err(Error::MalformedCert("No data".into()).into()) } } + + /// Returns the first RawCert encountered in the reader. + /// + /// Returns an error if there are multiple certificates. + fn from_reader<R: 'a + Read + Send + Sync>(reader: R) -> Result<Self> { + let br = Generic::with_cookie(reader, None, Cookie::default()); + Self::from_buffered_reader(br) + } } impl<'a> crate::seal::Sealed for RawCert<'a> {} @@ -655,6 +666,14 @@ impl<'a> RawCertParser<'a> { impl<'a> Parse<'a, RawCertParser<'a>> for RawCertParser<'a> { + /// Initializes a `RawCertParser` from a `BufferedReader`. + fn from_buffered_reader<R>(reader: R) -> Result<RawCertParser<'a>> + where + R: BufferedReader<Cookie> + 'a + { + RawCertParser::new(reader) + } + /// Initializes a `RawCertParser` from a `Read`er. fn from_reader<R: 'a + Read + Send + Sync>(reader: R) -> Result<Self> { RawCertParser::new(Generic::with_cookie(reader, None, Default::default())) |