summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNora Widdecke <nora@sequoia-pgp.org>2021-01-19 17:57:28 +0100
committerNora Widdecke <nora@sequoia-pgp.org>2021-01-19 17:57:28 +0100
commit95a5c410a4ab6b1f7821a00be0577e063804cfe9 (patch)
tree33c266afa99b96ac997e357c00032bbd6213d862
parente956fa7f69517d70292a2260e8f6986012a4447b (diff)
benchmarks: extract common encryption functions.nora/benchmarking
-rw-r--r--openpgp/benches/common/encrypt.rs42
-rw-r--r--openpgp/benches/common/mod.rs1
-rw-r--r--openpgp/benches/encrypt_message.rs37
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) {