summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNora Widdecke <nora@sequoia-pgp.org>2022-07-25 13:21:30 +0200
committerNora Widdecke <nora@sequoia-pgp.org>2022-07-25 14:50:06 +0200
commite04d73a476c6e6fb1493fe2d8b14b696af516f75 (patch)
tree6ff081e9a23ceabe0eb2ae6575d81bdeddf40f73
parentf5b3d935e4bf14fb8b51a85f5cb0482408271036 (diff)
add new trait bounds
- block_modes 0.8 adds new trait bounds to the ciphers used in Cfb and Ecb block modes. Cfb<C> now requires C to be BlockEncrypt, Ecb<C> now requires C to be BlockEncrypt and BlockDecrypt.
-rw-r--r--openpgp/src/crypto/backend/rust/aead.rs9
-rw-r--r--openpgp/src/crypto/backend/rust/symmetric.rs4
2 files changed, 6 insertions, 7 deletions
diff --git a/openpgp/src/crypto/backend/rust/aead.rs b/openpgp/src/crypto/backend/rust/aead.rs
index ad5f3a9c..76a5379f 100644
--- a/openpgp/src/crypto/backend/rust/aead.rs
+++ b/openpgp/src/crypto/backend/rust/aead.rs
@@ -2,8 +2,7 @@
use std::cmp;
-use cipher::{BlockCipher, NewBlockCipher};
-use cipher::block::Block;
+use cipher::{Block, BlockCipher, BlockEncrypt, NewBlockCipher};
use cipher::consts::U16;
use eax::online::{Eax, Encrypt, Decrypt};
use generic_array::{ArrayLength, GenericArray};
@@ -34,7 +33,7 @@ impl<T, N: ArrayLength<T>> GenericArrayExt<T, N> for GenericArray<T, N> {
impl<Cipher> Aead for Eax<Cipher, Encrypt>
where
- Cipher: BlockCipher<BlockSize = U16> + NewBlockCipher + Clone,
+ Cipher: BlockCipher<BlockSize = U16> + NewBlockCipher + BlockEncrypt + Clone,
Cipher::ParBlocks: ArrayLength<Block<Cipher>>,
{
fn update(&mut self, ad: &[u8]) {
@@ -64,7 +63,7 @@ where
impl<Cipher> Aead for Eax<Cipher, Decrypt>
where
- Cipher: BlockCipher<BlockSize = U16> + NewBlockCipher + Clone,
+ Cipher: BlockCipher<BlockSize = U16> + NewBlockCipher + BlockEncrypt + Clone,
Cipher::ParBlocks: ArrayLength<Block<Cipher>>,
{
fn update(&mut self, ad: &[u8]) {
@@ -93,7 +92,7 @@ where
impl<Cipher, Op> seal::Sealed for Eax<Cipher, Op>
where
- Cipher: BlockCipher<BlockSize = U16> + NewBlockCipher + Clone,
+ Cipher: BlockCipher<BlockSize = U16> + NewBlockCipher + BlockEncrypt + Clone,
Cipher::ParBlocks: ArrayLength<Block<Cipher>>,
Op: eax::online::CipherOp,
{}
diff --git a/openpgp/src/crypto/backend/rust/symmetric.rs b/openpgp/src/crypto/backend/rust/symmetric.rs
index 0867752b..70569f55 100644
--- a/openpgp/src/crypto/backend/rust/symmetric.rs
+++ b/openpgp/src/crypto/backend/rust/symmetric.rs
@@ -2,7 +2,7 @@ use std::slice;
use block_modes::{BlockMode, Cfb, Ecb};
use block_padding::ZeroPadding;
-use cipher::{BlockCipher, NewBlockCipher};
+use cipher::{BlockCipher, BlockDecrypt, BlockEncrypt, NewBlockCipher};
use generic_array::{ArrayLength, GenericArray};
use typenum::Unsigned;
@@ -14,7 +14,7 @@ macro_rules! impl_mode {
($mode:ident) => {
impl<C> Mode for $mode<C, ZeroPadding>
where
- C: BlockCipher + NewBlockCipher + Send + Sync,
+ C: BlockCipher + NewBlockCipher + BlockDecrypt + BlockEncrypt + Send + Sync,
{
fn block_size(&self) -> usize {
C::BlockSize::to_usize()