pub mod alert;
pub mod connection;
pub mod crypto;
pub mod handshake;
pub mod message;
pub mod record;
pub mod srtp;
pub mod transport;
pub use connection::DtlsConnection;
pub use crypto::keys::DtlsKeyingMaterial;
pub use srtp::extractor::DtlsSrtpContext;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DtlsVersion {
Dtls10 = 0xFEFF,
Dtls12 = 0xFEFD,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DtlsRole {
Client,
Server,
}
#[derive(Debug, Clone)]
pub struct DtlsConfig {
pub role: DtlsRole,
pub version: DtlsVersion,
pub mtu: usize,
pub max_retransmissions: usize,
pub srtp_profiles: Vec<crate::srtp::SrtpCryptoSuite>,
}
impl Default for DtlsConfig {
fn default() -> Self {
Self {
role: DtlsRole::Client,
version: DtlsVersion::Dtls12,
mtu: 1200,
max_retransmissions: 5,
srtp_profiles: vec![
crate::srtp::SRTP_AES128_CM_SHA1_80,
crate::srtp::SRTP_AES128_CM_SHA1_32,
],
}
}
}
pub type Result<T> = std::result::Result<T, crate::error::Error>;
pub async fn create_connection(_config: DtlsConfig) -> Result<DtlsConnection> {
unimplemented!("DTLS implementation is not yet complete")
}