literate_crypto/cipher/
block.rs1pub mod aes;
2mod modes;
3mod padding;
4
5pub use {
6 aes::{Aes128, Aes192, Aes256},
7 modes::{BlockMode, BlockSizeTooSmall, Cbc, Ctr, Ecb},
8 padding::{Padding, Pkcs7},
9};
10
11pub trait BlockCipher:
21 BlockEncrypt<EncryptionBlock = Self::Block, EncryptionKey = Self::Key>
22 + BlockDecrypt<DecryptionBlock = Self::Block, DecryptionKey = Self::Key>
23{
24 type Block;
25 type Key;
26}
27
28pub trait BlockEncrypt {
30 type EncryptionBlock;
31 type EncryptionKey;
32
33 fn encrypt(
35 &self,
36 data: Self::EncryptionBlock,
37 key: Self::EncryptionKey,
38 ) -> Self::EncryptionBlock;
39}
40
41pub trait BlockDecrypt {
43 type DecryptionBlock;
44 type DecryptionKey;
45
46 fn decrypt(
48 &self,
49 data: Self::DecryptionBlock,
50 key: Self::DecryptionKey,
51 ) -> Self::DecryptionBlock;
52}