Struct sequoia_openpgp::parse::PacketParserEOF [−][src]
pub struct PacketParserEOF<'a> { /* fields omitted */ }
Information about the stream of packets parsed by the
PacketParser
.
Once the PacketParser
reaches the end of the input stream, it
returns a PacketParserResult::EOF
with a PacketParserEOF
.
This object provides information about the parsed stream, notably
whether or not the packet stream was a well-formed Message
,
Cert
or keyring.
Examples
Parse some OpenPGP stream using a PacketParser
and detects the
kind of data:
use sequoia_openpgp as openpgp; use openpgp::Packet; use openpgp::parse::{Parse, PacketParserResult, PacketParser}; let openpgp_data: &[u8] = // ... let mut ppr = PacketParser::from_bytes(openpgp_data)?; while let PacketParserResult::Some(mut pp) = ppr { // Start parsing the next packet, recursing. ppr = pp.recurse()?.1; } if let PacketParserResult::EOF(eof) = ppr { if eof.is_message().is_ok() { // ... } else if eof.is_cert().is_ok() { // ... } else if eof.is_keyring().is_ok() { // ... } else { // ... } }
Implementations
impl<'a> PacketParserEOF<'a>
[src]
impl<'a> PacketParserEOF<'a>
[src]pub fn is_message(&self) -> Result<()>
[src]
pub fn is_message(&self) -> Result<()>
[src]Returns whether the stream is an OpenPGP Message.
A Message
has a very specific structure. Returns true
if the stream is of that form, as opposed to a Cert
or
just a bunch of packets.
Examples
Parse some OpenPGP stream using a PacketParser
and detects the
kind of data:
use sequoia_openpgp as openpgp; use openpgp::Packet; use openpgp::parse::{Parse, PacketParserResult, PacketParser}; let openpgp_data: &[u8] = // ... let mut ppr = PacketParser::from_bytes(openpgp_data)?; while let PacketParserResult::Some(mut pp) = ppr { // Start parsing the next packet, recursing. ppr = pp.recurse()?.1; } if let PacketParserResult::EOF(eof) = ppr { if eof.is_message().is_ok() { // ... } }
pub fn is_keyring(&self) -> Result<()>
[src]
pub fn is_keyring(&self) -> Result<()>
[src]Returns whether the message is an OpenPGP keyring.
A keyring has a very specific structure. Returns true
if
the stream is of that form, as opposed to a Message
or
just a bunch of packets.
Examples
Parse some OpenPGP stream using a PacketParser
and detects the
kind of data:
use sequoia_openpgp as openpgp; use openpgp::Packet; use openpgp::parse::{Parse, PacketParserResult, PacketParser}; let openpgp_data: &[u8] = // ... let mut ppr = PacketParser::from_bytes(openpgp_data)?; while let PacketParserResult::Some(mut pp) = ppr { // Start parsing the next packet, recursing. ppr = pp.recurse()?.1; } if let PacketParserResult::EOF(eof) = ppr { if eof.is_keyring().is_ok() { // ... } }
pub fn is_cert(&self) -> Result<()>
[src]
pub fn is_cert(&self) -> Result<()>
[src]Returns whether the message is an OpenPGP Cert.
A Cert
has a very specific structure. Returns true
if
the stream is of that form, as opposed to a Message
or
just a bunch of packets.
Examples
Parse some OpenPGP stream using a PacketParser
and detects the
kind of data:
use sequoia_openpgp as openpgp; use openpgp::Packet; use openpgp::parse::{Parse, PacketParserResult, PacketParser}; let openpgp_data: &[u8] = // ... let mut ppr = PacketParser::from_bytes(openpgp_data)?; while let PacketParserResult::Some(mut pp) = ppr { // Start parsing the next packet, recursing. ppr = pp.recurse()?.1; } if let PacketParserResult::EOF(eof) = ppr { if eof.is_cert().is_ok() { // ... } }
pub fn last_path(&self) -> &[usize]ⓘ
[src]
pub fn last_path(&self) -> &[usize]ⓘ
[src]Returns the path of the last packet.
Examples
Parse some OpenPGP stream using a PacketParser
and returns
the path (see PacketPile::path_ref
) of the last packet:
use sequoia_openpgp as openpgp; use openpgp::Packet; use openpgp::parse::{Parse, PacketParserResult, PacketParser}; let openpgp_data: &[u8] = // ... let mut ppr = PacketParser::from_bytes(openpgp_data)?; while let PacketParserResult::Some(mut pp) = ppr { // Start parsing the next packet, recursing. ppr = pp.recurse()?.1; } if let PacketParserResult::EOF(eof) = ppr { let _ = eof.last_path(); }
pub fn last_recursion_depth(&self) -> Option<isize>
[src]
pub fn last_recursion_depth(&self) -> Option<isize>
[src]The last packet’s recursion depth.
A top-level packet has a recursion depth of 0. Packets in a top-level container have a recursion depth of 1, etc.
Examples
Parse some OpenPGP stream using a PacketParser
and returns
the recursion depth of the last packet:
use sequoia_openpgp as openpgp; use openpgp::Packet; use openpgp::parse::{Parse, PacketParserResult, PacketParser}; let openpgp_data: &[u8] = // ... let mut ppr = PacketParser::from_bytes(openpgp_data)?; while let PacketParserResult::Some(mut pp) = ppr { // Start parsing the next packet, recursing. ppr = pp.recurse()?.1; } if let PacketParserResult::EOF(eof) = ppr { let _ = eof.last_recursion_depth(); }
pub fn into_reader(self) -> Box<dyn BufferedReader<Cookie> + 'a>ⓘNotable traits for Box<R, Global>
impl<R> Read for Box<R, Global> where
R: Read + ?Sized, impl<W> Write for Box<W, Global> where
W: Write + ?Sized, impl<F, A> Future for Box<F, A> where
A: Allocator + 'static,
F: Future + Unpin + ?Sized, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
[src]
pub fn into_reader(self) -> Box<dyn BufferedReader<Cookie> + 'a>ⓘNotable traits for Box<R, Global>
impl<R> Read for Box<R, Global> where
R: Read + ?Sized, impl<W> Write for Box<W, Global> where
W: Write + ?Sized, impl<F, A> Future for Box<F, A> where
A: Allocator + 'static,
F: Future + Unpin + ?Sized, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
[src]Returns the exhausted reader.
Trait Implementations
Auto Trait Implementations
impl<'a> !RefUnwindSafe for PacketParserEOF<'a>
impl<'a> Send for PacketParserEOF<'a>
impl<'a> Sync for PacketParserEOF<'a>
impl<'a> Unpin for PacketParserEOF<'a>
impl<'a> !UnwindSafe for PacketParserEOF<'a>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
type Output = T
Should always be Self