summaryrefslogtreecommitdiffstats
path: root/openpgp/benches/common/encrypt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/benches/common/encrypt.rs')
-rw-r--r--openpgp/benches/common/encrypt.rs44
1 files changed, 43 insertions, 1 deletions
diff --git a/openpgp/benches/common/encrypt.rs b/openpgp/benches/common/encrypt.rs
index 0b5c94d7..edd898b5 100644
--- a/openpgp/benches/common/encrypt.rs
+++ b/openpgp/benches/common/encrypt.rs
@@ -1,7 +1,9 @@
use sequoia_openpgp as openpgp;
use openpgp::cert::Cert;
use openpgp::policy::StandardPolicy;
-use openpgp::serialize::stream::{Encryptor, LiteralWriter, Message};
+use openpgp::serialize::stream::{
+ padding::Padder, Armorer, Encryptor, LiteralWriter, Message, Signer,
+};
use std::io::Write;
@@ -27,6 +29,46 @@ pub fn encrypt_to_cert(
Ok(sink)
}
+// naively encrypt and sign, without caring for revocation or expiration
+pub fn encrypt_to_cert_and_sign(
+ bytes: &[u8],
+ sender: &Cert,
+ recipient: &Cert,
+) -> openpgp::Result<Vec<u8>> {
+ let mut sink = vec![];
+
+ let p = &StandardPolicy::new();
+ let signing_keypair = sender
+ .keys()
+ .with_policy(p, None)
+ .secret()
+ .for_signing()
+ .nth(0)
+ .unwrap()
+ .key()
+ .clone()
+ .into_keypair()?;
+
+ let recipients = recipient
+ .keys()
+ .with_policy(p, None)
+ .supported()
+ .for_transport_encryption()
+ .for_storage_encryption();
+
+ let message = Message::new(&mut sink);
+ let message = Armorer::new(message).build()?;
+ let message = Encryptor::for_recipients(message, recipients).build()?;
+ let message = Padder::new(message).build()?;
+ let message = Signer::new(message, signing_keypair)
+ //.add_intended_recipient(&recipient)
+ .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,