summaryrefslogtreecommitdiffstats
path: root/openpgp/src/serialize/stream.rs
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2022-01-25 13:58:30 +0100
committerJustus Winter <justus@sequoia-pgp.org>2022-02-14 17:14:03 +0100
commitf32f7d2fba9c70acb768b3c817545479ec2ae721 (patch)
tree095774e2f19dccec751b0e22945f4ecbc229d7d5 /openpgp/src/serialize/stream.rs
parent6873c811adaa2be86e2bab2b684a80b59fc04c5b (diff)
openpgp: Refactor AEAD encryption and decryption.
- Introduce a trait that schedules nonce and additional authenticated data for each AEAD chunk. - Factoring that out allows us to support different schemes, and decouple memory encryption from the OpenPGP schedules.
Diffstat (limited to 'openpgp/src/serialize/stream.rs')
-rw-r--r--openpgp/src/serialize/stream.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/openpgp/src/serialize/stream.rs b/openpgp/src/serialize/stream.rs
index 1bd4f047..3de68e64 100644
--- a/openpgp/src/serialize/stream.rs
+++ b/openpgp/src/serialize/stream.rs
@@ -2940,14 +2940,18 @@ impl<'a> Encryptor<'a> {
aead.chunk_size as u64, aead.nonce)?;
aed.serialize_headers(&mut inner)?;
+ use crate::crypto::aead::AEDv1Schedule;
+ let schedule = AEDv1Schedule::new(
+ aed.symmetric_algo(), aed.aead(), aead.chunk_size, aed.iv())?;
+
writer::AEADEncryptor::new(
inner,
Cookie::new(level),
aed.symmetric_algo(),
aed.aead(),
aead.chunk_size,
- aed.iv(),
- &sk,
+ schedule,
+ sk,
)
} else {
// Write the SEIP packet.