pub struct Message { /* private fields */ }
Expand description
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 10.3 of RFC 9580.
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 Message 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()?;
Implementations§
Source§impl Message
impl Message
Sourcepub fn body(&self) -> Option<&Literal>
pub fn body(&self) -> Option<&Literal>
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::from_reader(&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!");
Sourcepub fn packets(&self) -> &PacketPile
pub fn packets(&self) -> &PacketPile
Returns a reference to the message’s packets.
Trait Implementations§
Source§impl From<Message> for PacketPile
impl From<Message> for PacketPile
Source§impl MarshalInto for Message
impl MarshalInto for Message
Source§fn serialized_len(&self) -> usize
fn serialized_len(&self) -> usize
Source§fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
Source§impl<'a> Parse<'a, Message> for Message
impl<'a> Parse<'a, Message> for Message
Source§fn from_buffered_reader<R>(reader: R) -> Result<Message>where
R: BufferedReader<Cookie> + 'a,
fn from_buffered_reader<R>(reader: R) -> Result<Message>where
R: BufferedReader<Cookie> + 'a,
Reads a Message
from the specified reader.
See Message::try_from
for more details.
Source§impl SerializeInto for Message
impl SerializeInto for Message
Source§fn serialized_len(&self) -> usize
fn serialized_len(&self) -> usize
Source§fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
Source§impl TryFrom<PacketPile> for Message
impl TryFrom<PacketPile> for Message
Source§fn try_from(pile: PacketPile) -> Result<Self>
fn try_from(pile: PacketPile) -> Result<Self>
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 10.3 of
RFC 9580.
Caveats: this function assumes that any still encrypted parts or still compressed parts are valid messages.