diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2022-01-25 13:58:30 +0100 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2022-02-14 17:14:03 +0100 |
commit | f32f7d2fba9c70acb768b3c817545479ec2ae721 (patch) | |
tree | 095774e2f19dccec751b0e22945f4ecbc229d7d5 /openpgp/src/serialize/stream.rs | |
parent | 6873c811adaa2be86e2bab2b684a80b59fc04c5b (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.rs | 8 |
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. |