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
30
31
32
33
34
35
36
use util::replay_detector::*;
pub type ContextOption = Box<dyn (Fn() -> Box<dyn ReplayDetector + Send + 'static>) + Send + Sync>;
pub(crate) const MAX_SEQUENCE_NUMBER: u16 = 65535;
pub(crate) const MAX_SRTCP_INDEX: usize = 0x7FFFFFFF;
pub fn srtp_replay_protection(window_size: usize) -> ContextOption {
Box::new(move || -> Box<dyn ReplayDetector + Send> {
Box::new(WrappedSlidingWindowDetector::new(
window_size,
MAX_SEQUENCE_NUMBER as u64,
))
})
}
pub fn srtcp_replay_protection(window_size: usize) -> ContextOption {
Box::new(move || -> Box<dyn ReplayDetector + Send> {
Box::new(WrappedSlidingWindowDetector::new(
window_size,
MAX_SRTCP_INDEX as u64,
))
})
}
pub fn srtp_no_replay_protection() -> ContextOption {
Box::new(|| -> Box<dyn ReplayDetector + Send> { Box::new(NoOpReplayDetector::default()) })
}
pub fn srtcp_no_replay_protection() -> ContextOption {
Box::new(|| -> Box<dyn ReplayDetector + Send> { Box::new(NoOpReplayDetector::default()) })
}