use crate::error::ZmqError;
use bytes::{Bytes, BytesMut};
pub trait IDataCipher: Send + Sync + 'static {
fn encrypt_zmtp_frame(&mut self, plaintext_zmtp_frame: Bytes) -> Result<Bytes, ZmqError>;
fn decrypt_wire_data_to_zmtp_frame(&mut self, encrypted_wire_data: &mut BytesMut) -> Result<Option<Bytes>, ZmqError>;
}
#[derive(Debug, Default)]
pub(crate) struct PassThroughDataCipher;
impl IDataCipher for PassThroughDataCipher {
fn encrypt_zmtp_frame(&mut self, plaintext_zmtp_frame: Bytes) -> Result<Bytes, ZmqError> {
Ok(plaintext_zmtp_frame)
}
fn decrypt_wire_data_to_zmtp_frame(&mut self, wire_data: &mut BytesMut) -> Result<Option<Bytes>, ZmqError> {
if wire_data.is_empty() {
Ok(None)
} else {
let all_data = wire_data.split().freeze(); Ok(Some(all_data))
}
}
}