pub mod cipher_aead_aes_gcm;
pub mod cipher_aes_cm_hmac_sha1;
use bytes::BytesMut;
use shared::error::Result;
type Kdf = fn(u8, &[u8], &[u8], usize, usize) -> Result<Vec<u8>>;
pub(crate) trait Cipher: Send + Sync {
fn rtp_auth_tag_len(&self) -> usize;
fn rtcp_auth_tag_len(&self) -> usize;
fn aead_auth_tag_len(&self) -> usize;
fn get_rtcp_index(&self, input: &[u8]) -> usize;
fn encrypt_rtp(&mut self, payload: &[u8], header: &rtp::Header, roc: u32) -> Result<BytesMut>;
fn decrypt_rtp(&mut self, payload: &[u8], header: &rtp::Header, roc: u32) -> Result<BytesMut>;
fn encrypt_rtcp(&mut self, payload: &[u8], srtcp_index: usize, ssrc: u32) -> Result<BytesMut>;
fn decrypt_rtcp(&mut self, payload: &[u8], srtcp_index: usize, ssrc: u32) -> Result<BytesMut>;
}