1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mod aes_ctr_128;
mod chacha20_poly1305_openssh;
use crate::algorithm::hash::hash::Hash;
use crate::algorithm::mac::Mac;
use crate::SshResult;
pub(crate) use {aes_ctr_128::AesCtr128, chacha20_poly1305_openssh::ChaCha20Poly1305};
pub trait Encryption {
fn bsize(&self) -> usize;
fn iv_size(&self) -> usize;
fn new(hash: Hash, mac: Box<dyn Mac>) -> Self
where
Self: Sized;
fn encrypt(&mut self, client_sequence_num: u32, buf: &mut Vec<u8>);
fn decrypt(&mut self, sequence_number: u32, buf: &mut [u8]) -> SshResult<Vec<u8>>;
fn packet_len(&mut self, sequence_number: u32, buf: &[u8]) -> usize;
fn data_len(&mut self, sequence_number: u32, buf: &[u8]) -> usize;
fn is_cp(&self) -> bool;
}