diff options
Diffstat (limited to 'openpgp/benches/common/encrypt.rs')
-rw-r--r-- | openpgp/benches/common/encrypt.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/openpgp/benches/common/encrypt.rs b/openpgp/benches/common/encrypt.rs new file mode 100644 index 00000000..1dc0c9f2 --- /dev/null +++ b/openpgp/benches/common/encrypt.rs @@ -0,0 +1,42 @@ +use sequoia_openpgp::cert::Cert; +use sequoia_openpgp::parse::Parse; +use sequoia_openpgp::policy::StandardPolicy; +use sequoia_openpgp::serialize::stream::{Encryptor, LiteralWriter, Message}; + +use std::io::Write; + +pub fn encrypt_to_cert( + bytes: &[u8], + cert: &Cert, +) -> sequoia_openpgp::Result<Vec<u8>> { + let mut sink = vec![]; + let p = &StandardPolicy::new(); + let recipients = cert + .keys() + .with_policy(p, None) + .supported() + .alive() + .revoked(false) + .for_transport_encryption(); + let message = + Encryptor::for_recipients(Message::new(&mut sink), recipients) + .build()?; + let mut w = LiteralWriter::new(message).build()?; + w.write_all(bytes)?; + w.finalize()?; + Ok(sink) +} + +pub fn encrypt_with_password( + bytes: &[u8], + password: &str, +) -> sequoia_openpgp::Result<Vec<u8>> { + let mut sink = vec![]; + let message = + Encryptor::with_passwords(Message::new(&mut sink), Some(password)) + .build()?; + let mut w = LiteralWriter::new(message).build()?; + w.write_all(bytes)?; + w.finalize()?; + Ok(sink) +} |