[][src]Struct sequoia_openpgp::Message

pub struct Message { /* fields omitted */ }

A message.

An OpenPGP message is a structured sequence of OpenPGP packets. Basically, it's an optionally encrypted, optionally signed literal data packet. The exact structure is defined in Section 11.3 of RFC 4880.

ASCII Armored Messages are wrapped in -----BEGIN PGP MESSAGE----- header and -----END PGP MESSAGE----- tail lines:

-----BEGIN PGP MESSAGE-----

xA0DAAoW5saJekzviSQByxBiAAAAAADYtdiv2KfZgtipwnUEABYKACcFglwJHYoW
IQRnpIdTo4Cms7fffcXmxol6TO+JJAkQ5saJekzviSQAAIJ6APwK6FxtHXn8txDl
tBFsIXlOSLOs4BvArlZzZSMomIyFLAEAwCLJUChMICDxWXRlHxORqU5x6hlO3DdW
sl/1DAbnRgI=
=AqoO
-----END PGP MESSAGE-----

Examples

Creating a Messaage encrypted with a password.

use std::io::Write;
use openpgp::serialize::stream::{Message, Encryptor, LiteralWriter};

let mut sink = vec![];
let message = Encryptor::with_passwords(
    Message::new(&mut sink), Some("ściśle tajne")).build()?;
let mut w = LiteralWriter::new(message).build()?;
w.write_all(b"Hello world.")?;
w.finalize()?;

Methods

impl Message[src]

pub fn body(&self) -> Option<&Literal>[src]

Returns the body of the message.

Returns None if no literal data packet is found. This happens if a SEIP container has not been decrypted.

Examples

use std::io;
use std::io::Read;
use openpgp::Message;
use openpgp::armor::{Reader, ReaderMode};
use openpgp::parse::Parse;

let data = "yxJiAAAAAABIZWxsbyB3b3JsZCE="; // base64 over literal data packet

let mut cursor = io::Cursor::new(&data);
let mut reader = Reader::new(&mut cursor, ReaderMode::VeryTolerant);

let mut buf = Vec::new();
reader.read_to_end(&mut buf)?;

let message = Message::from_bytes(&buf)?;
assert_eq!(message.body().unwrap().body(), b"Hello world!");

Methods from Deref<Target = PacketPile>

pub fn pretty_print(&self)[src]

Pretty prints the message to stderr.

This function is primarily intended for debugging purposes.

pub fn path_ref(&self, pathspec: &[usize]) -> Option<&Packet>[src]

Returns a reference to the packet at the location described by pathspec.

pathspec is a slice of the form [ 0, 1, 2 ]. Each element is the index of packet in a container. Thus, the previous path specification means: return the third child of the second child of the first top-level packet. In other words, the starred packet in the following tree:

        PacketPile
       /     |     \
      0      1      2  ...
    /   \
   /     \
 0         1  ...
       /   |   \  ...
      0    1    2
                *

And, [ 10 ] means return the 11th top-level packet.

Note: there is no packet at the root. Thus, the path [] returns None.

Example

let pile = PacketPile::from(packets);

if let Some(packet) = pile.path_ref(&[0]) {
    // There is a packet at this path.
}

if let None = pile.path_ref(&[0, 1, 2]) {
    // But none here.
}

Important traits for Iter<'a>
pub fn descendants(&self) -> Iter[src]

Returns an iterator over all of the packet's descendants, in depth-first order.

let mut lit = Literal::new(DataFormat::Text);
lit.set_body(b"test".to_vec());

let pile = PacketPile::from(vec![ lit.into() ]);

for packet in pile.descendants() {
    assert_eq!(packet.tag(), Tag::Literal);
}

pub fn children(&self) -> impl Iterator<Item = &Packet> + ExactSizeIterator[src]

Returns an iterator over the top-level packets.

let mut lit = Literal::new(DataFormat::Text);
lit.set_body(b"test".to_vec());

let pile = PacketPile::from(vec![ lit.into() ]);

assert_eq!(pile.children().len(), 1);

Trait Implementations

impl<'a> Parse<'a, Message> for Message[src]

fn from_reader<R: 'a + Read>(reader: R) -> Result<Self>[src]

Reads a Message from the specified reader.

See Message::try_from for more details.

fn from_file<P: AsRef<Path>>(path: P) -> Result<Self>[src]

Reads a Message from the specified file.

See Message::try_from for more details.

fn from_bytes<D: AsRef<[u8]> + ?Sized>(data: &'a D) -> Result<Self>[src]

Reads a Message from buf.

See Message::try_from for more details.

impl Serialize for Message[src]

fn serialize(&self, o: &mut dyn Write) -> Result<()>[src]

Writes a serialized version of the object to o.

fn export(&self, o: &mut dyn Write) -> Result<()>[src]

Exports a serialized version of the object to o. Read more

impl Marshal for Message[src]

fn serialize(&self, o: &mut dyn Write) -> Result<()>[src]

Writes a serialized version of the specified Message to o.

fn export(&self, o: &mut dyn Write) -> Result<()>[src]

Exports a serialized version of the object to o. Read more

impl SerializeInto for Message[src]

fn serialized_len(&self) -> usize[src]

Computes the maximal length of the serialized representation. Read more

fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>[src]

Serializes into the given buffer. Read more

fn to_vec(&self) -> Result<Vec<u8>>[src]

Serializes the packet to a vector.

fn export_into(&self, buf: &mut [u8]) -> Result<usize>[src]

Exports into the given buffer. Read more

fn export_to_vec(&self) -> Result<Vec<u8>>[src]

Exports to a vector. Read more

impl MarshalInto for Message[src]

fn to_vec(&self) -> Result<Vec<u8>>[src]

Serializes the packet to a vector.

fn export_to_vec(&self) -> Result<Vec<u8>>[src]

Exports to a vector. Read more

impl From<Message> for PacketPile[src]

impl PartialEq<Message> for Message[src]

impl Deref for Message[src]

type Target = PacketPile

The resulting type after dereferencing.

impl Debug for Message[src]

impl TryFrom<PacketPile> for Message[src]

type Error = Error

The type returned in the event of a conversion error.

fn try_from(pile: PacketPile) -> Result<Self>[src]

Converts the PacketPile to a Message.

Converting a PacketPile to a Message doesn't change the packets; it asserts that the packet sequence is an optionally encrypted, optionally signed, optionally compressed literal data packet. The exact grammar is defined in Section 11.3 of RFC 4880.

Caveats: this function assumes that any still encrypted parts or still compressed parts are valid messages.

impl TryFrom<Vec<Packet>> for Message[src]

type Error = Error

The type returned in the event of a conversion error.

fn try_from(packets: Vec<Packet>) -> Result<Self>[src]

Converts the vector of Packets to a Message.

See Message::try_from for more details.

impl FromStr for Message[src]

type Err = Error

The associated error which can be returned from parsing.

Auto Trait Implementations

impl Send for Message

impl Sync for Message

Blanket Implementations

impl<T> From for T[src]

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

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

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

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

The type returned in the event of a conversion error.