Struct sequoia_openpgp::parse::PacketParserEOF[][src]

pub struct PacketParserEOF<'a> { /* fields omitted */ }
Expand description

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

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() {
        // ...
    }
}

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() {
        // ...
    }
}

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() {
        // ...
    }
}

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();
}

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();
}

Returns the exhausted reader.

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.