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]

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]

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]

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]

Notable traits for &'_ [u8]

impl<'_> Read for &'_ [u8]impl<'_> Write for &'_ mut [u8]
[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]

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]

Returns the exhausted reader.

Trait Implementations

impl<'a> Debug for PacketParserEOF<'a>[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

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> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.