diff options
author | Nora Widdecke <nora@sequoia-pgp.org> | 2021-01-19 17:57:28 +0100 |
---|---|---|
committer | Nora Widdecke <nora@sequoia-pgp.org> | 2021-01-19 17:57:28 +0100 |
commit | 95a5c410a4ab6b1f7821a00be0577e063804cfe9 (patch) | |
tree | 33c266afa99b96ac997e357c00032bbd6213d862 | |
parent | e956fa7f69517d70292a2260e8f6986012a4447b (diff) |
benchmarks: extract common encryption functions.nora/benchmarking
-rw-r--r-- | openpgp/benches/common/encrypt.rs | 42 | ||||
-rw-r--r-- | openpgp/benches/common/mod.rs | 1 | ||||
-rw-r--r-- | openpgp/benches/encrypt_message.rs | 37 |
3 files changed, 51 insertions, 29 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) +} diff --git a/openpgp/benches/common/mod.rs b/openpgp/benches/common/mod.rs new file mode 100644 index 00000000..b9c16b39 --- /dev/null +++ b/openpgp/benches/common/mod.rs @@ -0,0 +1 @@ +pub(super) mod encrypt; diff --git a/openpgp/benches/encrypt_message.rs b/openpgp/benches/encrypt_message.rs index 13aef2bf..b5666021 100644 --- a/openpgp/benches/encrypt_message.rs +++ b/openpgp/benches/encrypt_message.rs @@ -3,47 +3,26 @@ use criterion::{criterion_group, criterion_main, Criterion}; use sequoia_openpgp::cert::Cert; use sequoia_openpgp::parse::Parse; use sequoia_openpgp::serialize::stream::{Encryptor, LiteralWriter, Message}; -use sequoia_openpgp::policy::StandardPolicy; use std::io::Write; +mod common; +use common::encrypt; + lazy_static::lazy_static! { static ref ZEROS_1_MB: Vec<u8> = vec![0; 1 * 1024 * 1024]; static ref ZEROS_10_MB: Vec<u8> = vec![0; 10 * 1024 * 1024]; } - -fn encrypt_to_testy(bytes: &[u8]) -> sequoia_openpgp::Result<()> { - let mut sink = vec![]; +pub fn encrypt_to_testy(bytes: &[u8]) -> sequoia_openpgp::Result<Vec<u8>> { let testy = Cert::from_bytes(&include_bytes!("../tests/data/keys/testy.pgp")[..])?; - let p = &StandardPolicy::new(); - let recipients = testy - .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(()) + encrypt::encrypt_to_cert(bytes, &testy) } -fn encrypt_with_password(bytes: &[u8]) -> sequoia_openpgp::Result<()> { - 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(bytes)?; - w.finalize()?; - Ok(()) +pub fn encrypt_with_password(bytes: &[u8]) -> sequoia_openpgp::Result<Vec<u8>> { + let password = "ściśle tajne"; + encrypt::encrypt_with_password(bytes, password) } fn bench_encrypt(c: &mut Criterion) { |