[][src]Struct sequoia_openpgp::serialize::stream::Encryptor

pub struct Encryptor<'a> { /* fields omitted */ }

Encrypts a packet stream.

Methods

impl<'a> Encryptor<'a>[src]

pub fn for_recipient(inner: Stack<'a, Cookie>, recipient: Recipient<'a>) -> Self[src]

Creates a new encryptor.

The stream will be encrypted using a generated session key, which will be encrypted using the given passwords, and all encryption-capable subkeys of the given TPKs.

Unless otherwise specified, the stream is encrypted using AES256. If aead_algo is None, a SEIP packet is emitted, otherwise the given AEAD algorithm is used.

Key preferences of the recipients are not honored.

Example

use std::io::Write;
extern crate sequoia_openpgp as openpgp;
use openpgp::types::KeyFlags;
use openpgp::serialize::stream::{
    Message, Encryptor, LiteralWriter,
};
let tpk = openpgp::TPK::from_bytes(
    "-----BEGIN PGP PUBLIC KEY BLOCK-----

     mQENBFpxtsABCADZcBa1Q3ZLZnju18o0+t8LoQuIIeyeUQ0H45y6xUqyrD5HSkVM
     ...
     -----END PGP PUBLIC KEY BLOCK-----"
).unwrap();

// Build a vector of recipients to hand to Encryptor.
let recipient =
    tpk.keys_valid()
    .key_flags(KeyFlags::default()
               .set_encrypt_at_rest(true)
               .set_encrypt_for_transport(true))
    .map(|(_, _, key)| key.into())
    .nth(0).unwrap();

let mut o = vec![];
let message = Message::new(&mut o);
let encryptor =
    Encryptor::for_recipient(message, recipient)
        .build().expect("Failed to create encryptor");
let mut w = LiteralWriter::new(encryptor).build()?;
w.write_all(b"Hello world.")?;
w.finalize()?;

pub fn with_password(inner: Stack<'a, Cookie>, password: Password) -> Self[src]

Creates a new encryptor.

The stream will be encrypted using a generated session key, which will be encrypted using the given passwords, and all encryption-capable subkeys of the given TPKs.

Unless otherwise specified, the stream is encrypted using AES256. If aead_algo is None, a SEIP packet is emitted, otherwise the given AEAD algorithm is used.

Key preferences of the recipients are not honored.

Example

use std::io::Write;
extern crate sequoia_openpgp as openpgp;
use openpgp::types::KeyFlags;
use openpgp::serialize::stream::{
    Message, Encryptor, LiteralWriter,
};
let mut o = vec![];
let message = Message::new(&mut o);
let encryptor =
    Encryptor::with_password(message, "совершенно секретно".into())
        .build().expect("Failed to create encryptor");
let mut w = LiteralWriter::new(encryptor).build()?;
w.write_all(b"Hello world.")?;
w.finalize()?;

pub fn add_recipient(self, recipient: Recipient<'a>) -> Self[src]

Adds a recipient.

pub fn add_password(self, password: Password) -> Self[src]

Adds a password.

pub fn sym_algo(self, algo: SymmetricAlgorithm) -> Self[src]

Sets the symmetric algorithm to use.

pub fn aead_algo(self, algo: AEADAlgorithm) -> Self[src]

Enables AEAD and sets the AEAD algorithm to use.

pub fn build(self) -> Result<Stack<'a, Cookie>>[src]

Finalizes the encryptor, returning the writer stack.

Trait Implementations

impl<'a> Drop for Encryptor<'a>[src]

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

impl<'a> Write for Encryptor<'a>[src]

fn write_vectored(&mut self, bufs: &[IoVec]) -> Result<usize, Error>[src]

🔬 This is a nightly-only experimental API. (iovec)

Like write, except that it writes from a slice of buffers. Read more

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
1.0.0
[src]

Attempts to write an entire buffer into this writer. Read more

fn write_fmt(&mut self, fmt: Arguments) -> Result<(), Error>
1.0.0
[src]

Writes a formatted string into this writer, returning any error encountered. Read more

fn by_ref(&mut self) -> &mut Self
1.0.0
[src]

Creates a "by reference" adaptor for this instance of Write. Read more

Auto Trait Implementations

impl<'a> !Send for Encryptor<'a>

impl<'a> !Sync for Encryptor<'a>

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.

impl<V, T> VZip for T where
    V: MultiLane<T>, 

impl<W> WriteBytesExt for W where
    W: Write + ?Sized

fn write_u8(&mut self, n: u8) -> Result<(), Error>

Writes an unsigned 8 bit integer to the underlying writer. Read more

fn write_i8(&mut self, n: i8) -> Result<(), Error>

Writes a signed 8 bit integer to the underlying writer. Read more

fn write_u16<T>(&mut self, n: u16) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned 16 bit integer to the underlying writer. Read more

fn write_i16<T>(&mut self, n: i16) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed 16 bit integer to the underlying writer. Read more

fn write_u24<T>(&mut self, n: u32) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned 24 bit integer to the underlying writer. Read more

fn write_i24<T>(&mut self, n: i32) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed 24 bit integer to the underlying writer. Read more

fn write_u32<T>(&mut self, n: u32) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned 32 bit integer to the underlying writer. Read more

fn write_i32<T>(&mut self, n: i32) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed 32 bit integer to the underlying writer. Read more

fn write_u48<T>(&mut self, n: u64) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned 48 bit integer to the underlying writer. Read more

fn write_i48<T>(&mut self, n: i64) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed 48 bit integer to the underlying writer. Read more

fn write_u64<T>(&mut self, n: u64) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned 64 bit integer to the underlying writer. Read more

fn write_i64<T>(&mut self, n: i64) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed 64 bit integer to the underlying writer. Read more

fn write_u128<T>(&mut self, n: u128) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned 128 bit integer to the underlying writer.

fn write_i128<T>(&mut self, n: i128) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed 128 bit integer to the underlying writer.

fn write_uint<T>(&mut self, n: u64, nbytes: usize) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned n-bytes integer to the underlying writer. Read more

fn write_int<T>(&mut self, n: i64, nbytes: usize) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed n-bytes integer to the underlying writer. Read more

fn write_uint128<T>(&mut self, n: u128, nbytes: usize) -> Result<(), Error> where
    T: ByteOrder, 

Writes an unsigned n-bytes integer to the underlying writer. Read more

fn write_int128<T>(&mut self, n: i128, nbytes: usize) -> Result<(), Error> where
    T: ByteOrder, 

Writes a signed n-bytes integer to the underlying writer. Read more

fn write_f32<T>(&mut self, n: f32) -> Result<(), Error> where
    T: ByteOrder, 

Writes a IEEE754 single-precision (4 bytes) floating point number to the underlying writer. Read more

fn write_f64<T>(&mut self, n: f64) -> Result<(), Error> where
    T: ByteOrder, 

Writes a IEEE754 double-precision (8 bytes) floating point number to the underlying writer. Read more